clang -E should not print tokens from the predefines buffer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42838 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2007-10-10 20:45:16 +00:00
Родитель ba0f43571a
Коммит 6f688e131e
1 изменённых файлов: 16 добавлений и 5 удалений

Просмотреть файл

@ -535,10 +535,16 @@ void clang::DoPrintPreprocessedInput(unsigned MainFileID, Preprocessor &PP,
// Start parsing the specified input file.
PP.EnterMainSourceFile(MainFileID);
do {
PrevTok = Tok;
PP.Lex(Tok);
// Consume all of the tokens that come from the predefines buffer. Those
// should not be emitted into the output and are guaranteed to be at the
// start.
const SourceManager &SourceMgr = PP.getSourceManager();
do PP.Lex(Tok);
while (Tok.isNot(tok::eof) &&
!strcmp(SourceMgr.getSourceName(Tok.getLocation()), "<predefines>"));
while (1) {
// If this token is at the start of a line, emit newlines if needed.
if (Tok.isAtStartOfLine()) {
@ -565,7 +571,12 @@ void clang::DoPrintPreprocessedInput(unsigned MainFileID, Preprocessor &PP,
OutputString(&S[0], S.size());
}
Callbacks->SetEmittedTokensOnThisLine();
} while (Tok.isNot(tok::eof));
if (Tok.is(tok::eof)) break;
PrevTok = Tok;
PP.Lex(Tok);
}
OutputChar('\n');
CleanupOutputBuffer();