aboutsummaryrefslogtreecommitdiff
path: root/lib/Frontend/CacheTokens.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-07-27 02:58:57 +0000
committerTed Kremenek <kremenek@apple.com>2010-07-27 02:58:57 +0000
commit5c53f4cb1e46691d788db27153b406869cc4c53f (patch)
tree52a5340814d4d9205d04949b5082ac5b6f17f4f0 /lib/Frontend/CacheTokens.cpp
parent19c5dd120e42b1ba0642309a185c70f4a41aadbd (diff)
PTH generation: Don't save the leading '#' token in a null directive. This unbreaks using PTH with Boost (<rdar://problem/8227989>).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109484 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/CacheTokens.cpp')
-rw-r--r--lib/Frontend/CacheTokens.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/Frontend/CacheTokens.cpp b/lib/Frontend/CacheTokens.cpp
index a5fcebe994..53f7362ac2 100644
--- a/lib/Frontend/CacheTokens.cpp
+++ b/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)) {