diff options
author | Ted Kremenek <kremenek@apple.com> | 2010-07-27 02:58:57 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2010-07-27 02:58:57 +0000 |
commit | fee882ac95a4d8fd2798922fe2d8bbced6263107 (patch) | |
tree | 2b0f6dab987132193d35ffeb81053c7e367ea9ea /clang/lib/Frontend/CacheTokens.cpp | |
parent | 4edba2d130ad9217a6ba85870224cf6a84cc8770 (diff) | |
download | bcm5719-llvm-fee882ac95a4d8fd2798922fe2d8bbced6263107.tar.gz bcm5719-llvm-fee882ac95a4d8fd2798922fe2d8bbced6263107.zip |
PTH generation: Don't save the leading '#' token in a null directive. This unbreaks using PTH with Boost (<rdar://problem/8227989>).
llvm-svn: 109484
Diffstat (limited to 'clang/lib/Frontend/CacheTokens.cpp')
-rw-r--r-- | clang/lib/Frontend/CacheTokens.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/clang/lib/Frontend/CacheTokens.cpp b/clang/lib/Frontend/CacheTokens.cpp index a5fcebe9941..53f7362ac27 100644 --- a/clang/lib/Frontend/CacheTokens.cpp +++ b/clang/lib/Frontend/CacheTokens.cpp @@ -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)) { |