summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/TextDiagnosticPrinter.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2011-09-07 05:01:10 +0000
committerChandler Carruth <chandlerc@gmail.com>2011-09-07 05:01:10 +0000
commit0f1006a95ac27b689915c1ed2452ab360182bac6 (patch)
treef575c6757574fad967023d0e03a28a0fdc5ffc1c /clang/lib/Frontend/TextDiagnosticPrinter.cpp
parentce3e2c85b1c010df6907979a68e6147f266d727d (diff)
downloadbcm5719-llvm-0f1006a95ac27b689915c1ed2452ab360182bac6.tar.gz
bcm5719-llvm-0f1006a95ac27b689915c1ed2452ab360182bac6.zip
Don't compute the same line number in two places, once inside a loop.
llvm-svn: 139225
Diffstat (limited to 'clang/lib/Frontend/TextDiagnosticPrinter.cpp')
-rw-r--r--clang/lib/Frontend/TextDiagnosticPrinter.cpp20
1 files changed, 8 insertions, 12 deletions
diff --git a/clang/lib/Frontend/TextDiagnosticPrinter.cpp b/clang/lib/Frontend/TextDiagnosticPrinter.cpp
index 51ecc2657d3..100362f7739 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<CharSourceRange>::iterator I = Ranges.begin(),
- E = Ranges.end();
- I != E; ++I)
- Printer.HighlightRange(*I, SM, LineNo, FID, CaretLine, SourceLine);
- }
+ for (SmallVectorImpl<CharSourceRange>::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<FixItHint> Hints) {
@@ -633,8 +630,7 @@ private:
// code is on the same line as the caret.
std::pair<FileID, unsigned> 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
OpenPOWER on IntegriCloud