       let matchBuffer = buffer.substring(from: buffer.index(buffer.startIndex, offsetBy: startPos))
       // With a group of CHECK-DAGs, a single mismatching means the match on
       // that group of CHECK-DAGs fails immediately.
-      guard let t = pattern.match(matchBuffer, variableTable) else {
+      guard let range = pattern.match(matchBuffer, variableTable) else {
         //				PrintCheckFailed(SM, Pat.getLoc(), Pat, MatchBuffer, VariableTable)
         return nil
       }
-      var matchPos = t.0
-      let matchLen = t.1
+      var matchPos = range.location
+      let matchLen = range.length
       
       // Re-calc it as the offset relative to the start of the original string.
       matchPos += startPos

    for pat in notStrings {
      assert(pat.type == .not, "Expect CHECK-NOT!")

      guard let (Pos, _)/*(Pos, MatchLen)*/ = pat.match(buffer, variableTable) else {
        continue
      }
      buffer.cString(using: .utf8)?.withUnsafeBufferPointer { buf in
        let loc = CheckLoc.inBuffer(buf.baseAddress!.advanced(by: Pos), buf)
        diagnose(.error, loc, self.prefix + "-NOT: string occurred!")
      }
      diagnose(.note, pat.patternLoc, self.prefix + "-NOT: pattern specified here")

  }
}

/// Check the input to FileCheck provided in the buffer against the check 
/// strings read from the check file.
///
/// Returns `false` if the input fails to satisfy the checks.
private func check(input b : String, against checkStrings : [CheckString]) -> Bool {
  var buffer = b
  var failedChecks = false
