diff --git a/mlir/lib/Parser/Lexer.cpp b/mlir/lib/Parser/Lexer.cpp --- a/mlir/lib/Parser/Lexer.cpp +++ b/mlir/lib/Parser/Lexer.cpp @@ -41,11 +41,14 @@ Location Lexer::getEncodedSourceLocation(llvm::SMLoc loc) { auto &sourceMgr = getSourceMgr(); unsigned mainFileID = sourceMgr.getMainFileID(); - auto lineAndColumn = sourceMgr.getLineAndColumn(loc, mainFileID); + auto &bufferInfo = sourceMgr.getBufferInfo(mainFileID); + unsigned lineNo = bufferInfo.getLineNumber(loc.getPointer()); + unsigned column = + (loc.getPointer() - bufferInfo.getPointerForLineNumber(lineNo)) + 1; auto *buffer = sourceMgr.getMemoryBuffer(mainFileID); - return FileLineColLoc::get(context, buffer->getBufferIdentifier(), - lineAndColumn.first, lineAndColumn.second); + return FileLineColLoc::get(context, buffer->getBufferIdentifier(), lineNo, + column); } /// emitError - Emit an error message and return an Token::error token.