Skip to content

Commit f292d2f

Browse files
authored
Merge pull request #1093 from swiftwasm/master
[pull] swiftwasm from master
2 parents 1e8e77a + 889e84a commit f292d2f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+479
-139
lines changed

include/swift/Basic/SourceManager.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ class SourceManager {
206206
///
207207
/// This respects \c #sourceLocation directives.
208208
std::pair<unsigned, unsigned>
209-
getLineAndColumn(SourceLoc Loc, unsigned BufferID = 0) const {
209+
getPresumedLineAndColumnForLoc(SourceLoc Loc, unsigned BufferID = 0) const {
210210
assert(Loc.isValid());
211211
int LineOffset = getLineOffset(Loc);
212212
int l, c;
@@ -215,14 +215,15 @@ class SourceManager {
215215
return { LineOffset + l, c };
216216
}
217217

218-
/// Returns the real line number for a source location.
218+
/// Returns the real line and column for a source location.
219219
///
220220
/// If \p BufferID is provided, \p Loc must come from that source buffer.
221221
///
222222
/// This does not respect \c #sourceLocation directives.
223-
unsigned getLineNumber(SourceLoc Loc, unsigned BufferID = 0) const {
223+
std::pair<unsigned, unsigned>
224+
getLineAndColumnInBuffer(SourceLoc Loc, unsigned BufferID = 0) const {
224225
assert(Loc.isValid());
225-
return LLVMSourceMgr.FindLineNumber(Loc.Value, BufferID);
226+
return LLVMSourceMgr.getLineAndColumn(Loc.Value, BufferID);
226227
}
227228

228229
StringRef getEntireTextForBuffer(unsigned BufferID) const;

include/swift/SIL/SILArgument.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,7 @@ class SILArgument : public ValueBase {
9999
Bits.SILArgument.VOKind = static_cast<unsigned>(newKind);
100100
}
101101

102-
SILBasicBlock *getParent() { return parentBlock; }
103-
const SILBasicBlock *getParent() const { return parentBlock; }
102+
SILBasicBlock *getParent() const { return parentBlock; }
104103

105104
SILFunction *getFunction();
106105
const SILFunction *getFunction() const;

include/swift/SIL/SILRemarkStreamer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ toRemarkLocation(const SourceLoc &loc, const SourceManager &srcMgr) {
9494

9595
StringRef file = srcMgr.getDisplayNameForLoc(loc);
9696
unsigned line, col;
97-
std::tie(line, col) = srcMgr.getLineAndColumn(loc);
97+
std::tie(line, col) = srcMgr.getPresumedLineAndColumnForLoc(loc);
9898
return llvm::remarks::RemarkLocation{file, line, col};
9999
}
100100

include/swift/SILOptimizer/PassManager/Passes.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,8 @@ PASS(PredictableDeadAllocationElimination, "predictable-deadalloc-elim",
260260
"Eliminate dead temporary allocations after diagnostics")
261261
PASS(RedundantPhiElimination, "redundant-phi-elimination",
262262
"Redundant Phi Block Argument Elimination")
263+
PASS(PhiExpansion, "phi-expansion",
264+
"Replace Phi arguments by their only used field")
263265
PASS(ReleaseDevirtualizer, "release-devirtualizer",
264266
"SIL release Devirtualization")
265267
PASS(RetainSinking, "retain-sinking",

lib/AST/ASTScopeCreation.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,9 @@ bool doesRangeableRangeMatch(const T *x, const SourceManager &SM,
120120
auto const r = getRangeableSourceRange(x);
121121
if (r.isInvalid())
122122
return false;
123-
if (start && SM.getLineNumber(r.Start) != start)
123+
if (start && SM.getLineAndColumnInBuffer(r.Start).first != start)
124124
return false;
125-
if (end && SM.getLineNumber(r.End) != end)
125+
if (end && SM.getLineAndColumnInBuffer(r.End).first != end)
126126
return false;
127127
if (file.empty())
128128
return true;
@@ -2122,7 +2122,7 @@ class LocalizableDeclContextCollector : public ASTWalker {
21222122
return;
21232123
auto bufID = SM.findBufferContainingLoc(loc);
21242124
auto f = SM.getIdentifierForBuffer(bufID);
2125-
auto lin = SM.getLineNumber(loc);
2125+
auto lin = SM.getLineAndColumnInBuffer(loc).first;
21262126
if (f.endswith(file) && lin == line)
21272127
if (isa<PatternBindingDecl>(D))
21282128
llvm::errs() << "*** catchForDebugging: " << lin << " ***\n";

lib/AST/ASTScopePrinting.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ static void printSourceRange(llvm::raw_ostream &out, const SourceRange range,
118118
return;
119119
}
120120

121-
auto startLineAndCol = SM.getLineAndColumn(range.Start);
122-
auto endLineAndCol = SM.getLineAndColumn(range.End);
121+
auto startLineAndCol = SM.getPresumedLineAndColumnForLoc(range.Start);
122+
auto endLineAndCol = SM.getPresumedLineAndColumnForLoc(range.End);
123123

124124
out << "[" << startLineAndCol.first << ":" << startLineAndCol.second << " - "
125125
<< endLineAndCol.first << ":" << endLineAndCol.second << "]";

lib/AST/ASTScopeSourceRange.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,9 +176,9 @@ bool ASTScopeImpl::doesRangeMatch(unsigned start, unsigned end, StringRef file,
176176
return false;
177177
const auto &SM = getSourceManager();
178178
const auto r = getSourceRangeOfScope(true);
179-
if (start && start != SM.getLineNumber(r.Start))
179+
if (start && start != SM.getLineAndColumnInBuffer(r.Start).first)
180180
return false;
181-
if (end && end != SM.getLineNumber(r.End))
181+
if (end && end != SM.getLineAndColumnInBuffer(r.End).first)
182182
return false;
183183
if (file.empty())
184184
return true;

lib/AST/DeclContext.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,7 @@ static unsigned getLineNumber(DCType *DC) {
613613
return 0;
614614

615615
const ASTContext &ctx = static_cast<const DeclContext *>(DC)->getASTContext();
616-
return ctx.SourceMgr.getLineAndColumn(loc).first;
616+
return ctx.SourceMgr.getPresumedLineAndColumnForLoc(loc).first;
617617
}
618618

619619
unsigned DeclContext::printContext(raw_ostream &OS, const unsigned indent,

lib/AST/GenericSignatureBuilder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1406,7 +1406,7 @@ void RequirementSource::print(llvm::raw_ostream &out,
14061406

14071407
unsigned bufferID = srcMgr->findBufferContainingLoc(loc);
14081408

1409-
auto lineAndCol = srcMgr->getLineAndColumn(loc, bufferID);
1409+
auto lineAndCol = srcMgr->getPresumedLineAndColumnForLoc(loc, bufferID);
14101410
out << " @ " << lineAndCol.first << ':' << lineAndCol.second;
14111411
};
14121412

lib/AST/IncrementalRanges.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ using namespace incremental_ranges;
3636

3737
SerializableSourceLocation::SerializableSourceLocation(
3838
const SourceLoc loc, const SourceManager &SM) {
39-
auto lc = SM.getLineAndColumn(loc);
39+
auto lc = SM.getPresumedLineAndColumnForLoc(loc);
4040
line = lc.first;
4141
column = lc.second;
4242
}

lib/AST/Module.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -849,7 +849,7 @@ SourceFile::getBasicLocsForDecl(const Decl *D) const {
849849

850850
auto setLineColumn = [&SM](LineColumn &Home, SourceLoc Loc) {
851851
if (Loc.isValid()) {
852-
std::tie(Home.Line, Home.Column) = SM.getLineAndColumn(Loc);
852+
std::tie(Home.Line, Home.Column) = SM.getPresumedLineAndColumnForLoc(Loc);
853853
}
854854
};
855855
#define SET(X) setLineColumn(Result.X, D->get##X());

lib/AST/RawComment.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,11 @@ SingleRawComment::SingleRawComment(CharSourceRange Range,
5959
const SourceManager &SourceMgr)
6060
: Range(Range), RawText(SourceMgr.extractText(Range)),
6161
Kind(static_cast<unsigned>(getCommentKind(RawText))) {
62-
auto StartLineAndColumn = SourceMgr.getLineAndColumn(Range.getStart());
62+
auto StartLineAndColumn =
63+
SourceMgr.getPresumedLineAndColumnForLoc(Range.getStart());
6364
StartLine = StartLineAndColumn.first;
6465
StartColumn = StartLineAndColumn.second;
65-
EndLine = SourceMgr.getLineNumber(Range.getEnd());
66+
EndLine = SourceMgr.getLineAndColumnInBuffer(Range.getEnd()).first;
6667
}
6768

6869
SingleRawComment::SingleRawComment(StringRef RawText, unsigned StartColumn)

lib/Basic/SourceLoc.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ void SourceLoc::printLineAndColumn(raw_ostream &OS, const SourceManager &SM,
255255
return;
256256
}
257257

258-
auto LineAndCol = SM.getLineAndColumn(*this, BufferID);
258+
auto LineAndCol = SM.getPresumedLineAndColumnForLoc(*this, BufferID);
259259
OS << "line:" << LineAndCol.first << ':' << LineAndCol.second;
260260
}
261261

@@ -274,7 +274,7 @@ void SourceLoc::print(raw_ostream &OS, const SourceManager &SM,
274274
OS << "line";
275275
}
276276

277-
auto LineAndCol = SM.getLineAndColumn(*this, BufferID);
277+
auto LineAndCol = SM.getPresumedLineAndColumnForLoc(*this, BufferID);
278278
OS << ':' << LineAndCol.first << ':' << LineAndCol.second;
279279
}
280280

lib/Frontend/DiagnosticVerifier.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -447,9 +447,11 @@ DiagnosticVerifier::Result DiagnosticVerifier::verifyFile(unsigned BufferID) {
447447
if (PrevExpectedContinuationLine)
448448
Expected.LineNo = PrevExpectedContinuationLine;
449449
else
450-
Expected.LineNo = SM.getLineAndColumn(
451-
BufferStartLoc.getAdvancedLoc(MatchStart.data() - InputFile.data()),
452-
BufferID).first;
450+
Expected.LineNo = SM.getPresumedLineAndColumnForLoc(
451+
BufferStartLoc.getAdvancedLoc(MatchStart.data() -
452+
InputFile.data()),
453+
BufferID)
454+
.first;
453455
Expected.LineNo += LineOffset;
454456

455457
// Check if the next expected diagnostic should be in the same line.
@@ -961,7 +963,7 @@ void DiagnosticVerifier::handleDiagnostic(SourceManager &SM,
961963
}
962964

963965
if (Info.Loc.isValid()) {
964-
const auto lineAndColumn = SM.getLineAndColumn(Info.Loc);
966+
const auto lineAndColumn = SM.getPresumedLineAndColumnForLoc(Info.Loc);
965967
const auto fileName = SM.getDisplayNameForLoc(Info.Loc);
966968
CapturedDiagnostics.emplace_back(message, fileName, Info.Kind, Info.Loc,
967969
lineAndColumn.first, lineAndColumn.second,

lib/Frontend/PrintingDiagnosticConsumer.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -642,7 +642,7 @@ namespace {
642642
/// doesn't already exist.
643643
AnnotatedLine &lineForLoc(SourceLoc Loc) {
644644
// FIXME: This call to `getLineNumber` is expensive.
645-
unsigned lineNo = SM.getLineNumber(Loc);
645+
unsigned lineNo = SM.getLineAndColumnInBuffer(Loc).first;
646646
AnnotatedLine newLine(lineNo, 0, "");
647647
auto iter =
648648
std::lower_bound(AnnotatedLines.begin(), AnnotatedLines.end(),
@@ -651,7 +651,8 @@ namespace {
651651
});
652652
if (iter == AnnotatedLines.end() || iter->getLineNumber() != lineNo) {
653653
newLine.LineText = SM.getLineString(BufferID, lineNo);
654-
newLine.DisplayLineNumber = SM.getLineAndColumn(Loc).first;
654+
newLine.DisplayLineNumber =
655+
SM.getPresumedLineAndColumnForLoc(Loc).first;
655656
return *AnnotatedLines.insert(iter, newLine);
656657
} else {
657658
return *iter;
@@ -667,8 +668,9 @@ namespace {
667668

668669
void lineRangesForRange(CharSourceRange Range,
669670
SmallVectorImpl<CharSourceRange> &LineRanges) {
670-
unsigned startLineNo = SM.getLineNumber(Range.getStart());
671-
unsigned endLineNo = SM.getLineNumber(Range.getEnd());
671+
unsigned startLineNo =
672+
SM.getLineAndColumnInBuffer(Range.getStart()).first;
673+
unsigned endLineNo = SM.getLineAndColumnInBuffer(Range.getEnd()).first;
672674

673675
if (startLineNo == endLineNo) {
674676
LineRanges.push_back(Range);
@@ -747,7 +749,7 @@ namespace {
747749
std::max(getPreferredLineNumberIndent(), MinimumLineNumberIndent);
748750

749751
// Print the file name at the top of each excerpt.
750-
auto primaryLineAndColumn = SM.getLineAndColumn(PrimaryLoc);
752+
auto primaryLineAndColumn = SM.getPresumedLineAndColumnForLoc(PrimaryLoc);
751753
Out.changeColor(ColoredStream::Colors::CYAN);
752754
Out << std::string(lineNumberIndent + 1, '=') << " "
753755
<< SM.getDisplayNameForLoc(PrimaryLoc) << ":"
@@ -1101,7 +1103,7 @@ SourceManager::GetMessage(SourceLoc Loc, llvm::SourceMgr::DiagKind Kind,
11011103
R.End.getPointer()-LineStart));
11021104
}
11031105

1104-
LineAndCol = getLineAndColumn(Loc);
1106+
LineAndCol = getPresumedLineAndColumnForLoc(Loc);
11051107
}
11061108

11071109
return llvm::SMDiagnostic(LLVMSourceMgr, Loc.Value, BufferID,

lib/Frontend/SerializedDiagnosticConsumer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ void SerializedDiagnosticConsumer::addLocToRecord(SourceLoc Loc,
250250

251251
auto bufferId = SM.findBufferContainingLoc(Loc);
252252
unsigned line, col;
253-
std::tie(line, col) = SM.getLineAndColumn(Loc);
253+
std::tie(line, col) = SM.getPresumedLineAndColumnForLoc(Loc);
254254

255255
Record.push_back(getEmitFile(Filename));
256256
Record.push_back(line);

lib/IDE/CommentConversion.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ void CommentToXMLConverter::visitDocComment(const DocComment *DC) {
318318
if (Loc.isValid()) {
319319
const auto &SM = D->getASTContext().SourceMgr;
320320
StringRef FileName = SM.getDisplayNameForLoc(Loc);
321-
auto LineAndColumn = SM.getLineAndColumn(Loc);
321+
auto LineAndColumn = SM.getPresumedLineAndColumnForLoc(Loc);
322322
OS << " file=\"";
323323
appendWithXMLEscaping(OS, FileName);
324324
OS << "\"";

lib/IDE/CompletionInstance.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,8 @@ bool CompletionInstance::performCachedOperationIfPossible(
392392
newBufferID = SM.addMemBufferCopy(sourceText, bufferName);
393393
SM.openVirtualFile(SM.getLocForBufferStart(newBufferID),
394394
tmpSM.getDisplayNameForLoc(startLoc),
395-
tmpSM.getLineAndColumn(startLoc).first - 1);
395+
tmpSM.getPresumedLineAndColumnForLoc(startLoc).first -
396+
1);
396397
SM.setCodeCompletionPoint(newBufferID, newOffset);
397398

398399
// Construct dummy scopes. We don't need to restore the original scope

lib/IDE/Formatting.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ class FormatContext {
316316

317317
std::pair<unsigned, unsigned> indentLineAndColumn() {
318318
if (InnermostCtx)
319-
return SM.getLineAndColumn(InnermostCtx->ContextLoc);
319+
return SM.getPresumedLineAndColumnForLoc(InnermostCtx->ContextLoc);
320320
return std::make_pair(0, 0);
321321
}
322322

lib/IDE/IDERequests.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ void swift::simple_display(llvm::raw_ostream &out, const CursorInfoOwner &owner)
320320
return;
321321
auto &SM = owner.File->getASTContext().SourceMgr;
322322
out << SM.getIdentifierForBuffer(*owner.File->getBufferID());
323-
auto LC = SM.getLineAndColumn(owner.Loc);
323+
auto LC = SM.getPresumedLineAndColumnForLoc(owner.Loc);
324324
out << ":" << LC.first << ":" << LC.second;
325325
}
326326

@@ -331,7 +331,7 @@ void swift::ide::simple_display(llvm::raw_ostream &out,
331331
out << "Resolved cursor info at ";
332332
auto &SM = info.SF->getASTContext().SourceMgr;
333333
out << SM.getIdentifierForBuffer(*info.SF->getBufferID());
334-
auto LC = SM.getLineAndColumn(info.Loc);
334+
auto LC = SM.getPresumedLineAndColumnForLoc(info.Loc);
335335
out << ":" << LC.first << ":" << LC.second;
336336
}
337337

@@ -1052,8 +1052,8 @@ void swift::simple_display(llvm::raw_ostream &out,
10521052
return;
10531053
auto &SM = owner.File->getASTContext().SourceMgr;
10541054
out << SM.getIdentifierForBuffer(*owner.File->getBufferID());
1055-
auto SLC = SM.getLineAndColumn(owner.StartLoc);
1056-
auto ELC = SM.getLineAndColumn(owner.EndLoc);
1055+
auto SLC = SM.getPresumedLineAndColumnForLoc(owner.StartLoc);
1056+
auto ELC = SM.getPresumedLineAndColumnForLoc(owner.EndLoc);
10571057
out << ": (" << SLC.first << ":" << SLC.second << ", "
10581058
<< ELC.first << ":" << ELC.second << ")";
10591059
}

lib/IDE/Refactoring.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1184,7 +1184,7 @@ getNotableRegions(StringRef SourceText, unsigned NameOffset, StringRef Name,
11841184
unsigned BufferId = Instance->getPrimarySourceFile()->getBufferID().getValue();
11851185
SourceManager &SM = Instance->getSourceMgr();
11861186
SourceLoc NameLoc = SM.getLocForOffset(BufferId, NameOffset);
1187-
auto LineAndCol = SM.getLineAndColumn(NameLoc);
1187+
auto LineAndCol = SM.getPresumedLineAndColumnForLoc(NameLoc);
11881188

11891189
UnresolvedLoc UnresoledName{NameLoc, true};
11901190

@@ -1202,12 +1202,14 @@ getNotableRegions(StringRef SourceText, unsigned NameOffset, StringRef Name,
12021202
auto Ranges = Renamer.Ranges;
12031203

12041204
std::vector<NoteRegion> NoteRegions(Renamer.Ranges.size());
1205-
std::transform(Ranges.begin(), Ranges.end(), NoteRegions.begin(),
1206-
[&SM](RenameRangeDetail &Detail) -> NoteRegion {
1207-
auto Start = SM.getLineAndColumn(Detail.Range.getStart());
1208-
auto End = SM.getLineAndColumn(Detail.Range.getEnd());
1209-
return {Detail.RangeKind, Start.first, Start.second, End.first, End.second, Detail.Index};
1210-
});
1205+
std::transform(
1206+
Ranges.begin(), Ranges.end(), NoteRegions.begin(),
1207+
[&SM](RenameRangeDetail &Detail) -> NoteRegion {
1208+
auto Start = SM.getPresumedLineAndColumnForLoc(Detail.Range.getStart());
1209+
auto End = SM.getPresumedLineAndColumnForLoc(Detail.Range.getEnd());
1210+
return {Detail.RangeKind, Start.first, Start.second,
1211+
End.first, End.second, Detail.Index};
1212+
});
12111213

12121214
return NoteRegions;
12131215
}
@@ -3071,8 +3073,8 @@ bool RefactoringActionExpandSwitchCases::performChange() {
30713073
InsertRange = CharSourceRange(SM, RBraceLoc, RBraceLoc);
30723074
}
30733075
EditorConsumerInsertStream OS(EditConsumer, SM, InsertRange);
3074-
if (SM.getLineNumber(SwitchS->getLBraceLoc()) ==
3075-
SM.getLineNumber(SwitchS->getRBraceLoc())) {
3076+
if (SM.getLineAndColumnInBuffer(SwitchS->getLBraceLoc()).first ==
3077+
SM.getLineAndColumnInBuffer(SwitchS->getRBraceLoc()).first) {
30763078
OS << "\n";
30773079
}
30783080
auto Result = performCasesExpansionInSwitchStmt(SwitchS,

lib/IDE/SyntaxModel.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -538,8 +538,8 @@ static bool shouldTreatAsSingleToken(const SyntaxStructureNode &Node,
538538
// Avoid passing the individual syntax tokens corresponding to single-line
539539
// object literal expressions, as they will be reported as a single token.
540540
return Node.Kind == SyntaxStructureKind::ObjectLiteralExpression &&
541-
SM.getLineNumber(Node.Range.getStart()) ==
542-
SM.getLineNumber(Node.Range.getEnd());
541+
SM.getLineAndColumnInBuffer(Node.Range.getStart()).first ==
542+
SM.getLineAndColumnInBuffer(Node.Range.getEnd()).first;
543543
}
544544

545545
std::pair<bool, Expr *> ModelASTWalker::walkToExprPre(Expr *E) {

lib/Index/Index.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ class IndexSwiftASTWalker : public SourceEntityWalker {
602602
getLineColAndOffset(SourceLoc Loc) {
603603
if (Loc.isInvalid())
604604
return std::make_tuple(0, 0, None);
605-
auto lineAndColumn = SrcMgr.getLineAndColumn(Loc, BufferID);
605+
auto lineAndColumn = SrcMgr.getPresumedLineAndColumnForLoc(Loc, BufferID);
606606
unsigned offset = SrcMgr.getLocOffsetInBuffer(Loc, BufferID);
607607
return std::make_tuple(lineAndColumn.first, lineAndColumn.second, offset);
608608
}

lib/Parse/ParseDecl.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4855,9 +4855,10 @@ ParserStatus Parser::parseLineDirective(bool isLine) {
48554855
diagnose(Tok.getLoc(), diag::extra_tokens_line_directive);
48564856
return makeParserError();
48574857
}
4858-
4859-
int LineOffset = StartLine - SourceMgr.getLineNumber(nextLineStartLoc);
4860-
4858+
4859+
int LineOffset =
4860+
StartLine - SourceMgr.getLineAndColumnInBuffer(nextLineStartLoc).first;
4861+
48614862
// Create a new virtual file for the region started by the #line marker.
48624863
bool isNewFile = SourceMgr.openVirtualFile(nextLineStartLoc,
48634864
Filename.getValue(), LineOffset);

lib/Parse/ParseExpr.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3178,8 +3178,8 @@ Parser::parseTrailingClosures(bool isExprBasic, SourceRange calleeRange,
31783178
// Record the line numbers for the diagnostics below.
31793179
// Note that *do not* move this to after 'parseExprClosure()' it slows down
31803180
// 'getLineNumber()' call because of cache in SourceMgr.
3181-
auto origLine = SourceMgr.getLineNumber(calleeRange.End);
3182-
auto braceLine = SourceMgr.getLineNumber(braceLoc);
3181+
auto origLine = SourceMgr.getLineAndColumnInBuffer(calleeRange.End).first;
3182+
auto braceLine = SourceMgr.getLineAndColumnInBuffer(braceLoc).first;
31833183

31843184
ParserStatus result;
31853185

0 commit comments

Comments
 (0)