From 0f1006a95ac27b689915c1ed2452ab360182bac6 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Wed, 7 Sep 2011 05:01:10 +0000 Subject: [PATCH] Don't compute the same line number in two places, once inside a loop. llvm-svn: 139225 --- clang/lib/Frontend/TextDiagnosticPrinter.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/clang/lib/Frontend/TextDiagnosticPrinter.cpp b/clang/lib/Frontend/TextDiagnosticPrinter.cpp index 51ecc2657d32..100362f77399 100644 --- a/clang/lib/Frontend/TextDiagnosticPrinter.cpp +++ b/clang/lib/Frontend/TextDiagnosticPrinter.cpp @@ -505,6 +505,7 @@ public: if (Invalid) return; + unsigned LineNo = SM.getLineNumber(FID, FileOffset); unsigned ColNo = SM.getColumnNumber(FID, FileOffset); unsigned CaretEndColNo = ColNo + Lexer::MeasureTokenLength(Loc, SM, LangOpts); @@ -533,14 +534,10 @@ public: std::string CaretLine(LineEnd-LineStart, ' '); // Highlight all of the characters covered by Ranges with ~ characters. - if (!Ranges.empty()) { - unsigned LineNo = SM.getLineNumber(FID, FileOffset); - - for (SmallVectorImpl::iterator I = Ranges.begin(), - E = Ranges.end(); - I != E; ++I) - Printer.HighlightRange(*I, SM, LineNo, FID, CaretLine, SourceLine); - } + for (SmallVectorImpl::iterator I = Ranges.begin(), + E = Ranges.end(); + I != E; ++I) + Printer.HighlightRange(*I, SM, LineNo, FID, CaretLine, SourceLine); // Next, insert the caret itself. if (ColNo-1 < CaretLine.size()) @@ -579,7 +576,7 @@ public: CaretLine = ' ' + CaretLine; } - std::string FixItInsertionLine = BuildFixItInsertionLine(FID, FileOffset, + std::string FixItInsertionLine = BuildFixItInsertionLine(LineNo, LineStart, LineEnd, Hints); @@ -618,7 +615,7 @@ public: } private: - std::string BuildFixItInsertionLine(FileID FID, unsigned FileOffset, + std::string BuildFixItInsertionLine(unsigned LineNo, const char *LineStart, const char *LineEnd, ArrayRef Hints) { @@ -633,8 +630,7 @@ private: // code is on the same line as the caret. std::pair HintLocInfo = SM.getDecomposedExpansionLoc(I->RemoveRange.getBegin()); - if (SM.getLineNumber(HintLocInfo.first, HintLocInfo.second) == - SM.getLineNumber(FID, FileOffset)) { + if (LineNo == SM.getLineNumber(HintLocInfo.first, HintLocInfo.second)) { // Insert the new code into the line just below the code // that the user wrote. unsigned HintColNo -- GitLab