PTH generation: Don't save the leading '#' token in a null directive. This unbreaks using PTH with Boost (<rdar://problem/8227989>).

llvm-svn: 109484
This commit is contained in:
Ted Kremenek 2010-07-27 02:58:57 +00:00
parent 4edba2d130
commit fee882ac95
1 changed files with 9 additions and 4 deletions

View File

@ -311,14 +311,19 @@ PTHEntry PTHWriter::LexTokens(Lexer& L) {
// the next token.
assert(!ParsingPreprocessorDirective);
Offset HashOff = (Offset) Out.tell();
EmitToken(Tok);
// Get the next token.
L.LexFromRawLexer(Tok);
Token NextTok;
L.LexFromRawLexer(NextTok);
// If we see the start of line, then we had a null directive "#".
if (Tok.isAtStartOfLine())
// If we see the start of line, then we had a null directive "#". In
// this case, discard both tokens.
if (NextTok.isAtStartOfLine())
goto NextToken;
// The token is the start of a directive. Emit it.
EmitToken(Tok);
Tok = NextTok;
// Did we see 'include'/'import'/'include_next'?
if (Tok.isNot(tok::identifier)) {