зеркало из https://github.com/microsoft/clang-1.git
push line markers through -E mode.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67854 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
9b16da332b
Коммит
16629386f1
|
@ -692,6 +692,10 @@ void Preprocessor::HandleLineDirective(Token &Tok) {
|
|||
}
|
||||
|
||||
SourceMgr.AddLineNote(DigitTok.getLocation(), LineNo, FilenameID);
|
||||
|
||||
if (Callbacks)
|
||||
Callbacks->FileChanged(DigitTok.getLocation(), PPCallbacks::RenameFile,
|
||||
SrcMgr::C_User);
|
||||
}
|
||||
|
||||
/// ReadLineMarkerFlags - Parse and validate any flags at the end of a GNU line
|
||||
|
@ -823,6 +827,24 @@ void Preprocessor::HandleDigitDirective(Token &DigitTok) {
|
|||
SourceMgr.AddLineNote(DigitTok.getLocation(), LineNo, FilenameID,
|
||||
IsFileEntry, IsFileExit,
|
||||
IsSystemHeader, IsExternCHeader);
|
||||
|
||||
// If the preprocessor has callbacks installed, notify them of the #line
|
||||
// change. This is used so that the line marker comes out in -E mode for
|
||||
// example.
|
||||
if (Callbacks) {
|
||||
PPCallbacks::FileChangeReason Reason = PPCallbacks::RenameFile;
|
||||
if (IsFileEntry)
|
||||
Reason = PPCallbacks::EnterFile;
|
||||
else if (IsFileExit)
|
||||
Reason = PPCallbacks::ExitFile;
|
||||
SrcMgr::CharacteristicKind FileKind = SrcMgr::C_User;
|
||||
if (IsExternCHeader)
|
||||
FileKind = SrcMgr::C_ExternCSystem;
|
||||
else if (IsSystemHeader)
|
||||
FileKind = SrcMgr::C_System;
|
||||
|
||||
Callbacks->FileChanged(DigitTok.getLocation(), Reason, FileKind);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -172,6 +172,7 @@ void PrintPPOutputPPCallbacks::FileChanged(SourceLocation Loc,
|
|||
}
|
||||
|
||||
Loc = SourceMgr.getInstantiationLoc(Loc);
|
||||
// FIXME: Should use presumed line #!
|
||||
CurLine = SourceMgr.getInstantiationLineNumber(Loc);
|
||||
|
||||
if (DisableLineMarkers) return;
|
||||
|
|
Загрузка…
Ссылка в новой задаче