summaryrefslogtreecommitdiffstats
path: root/clang/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
commitfee882ac95a4d8fd2798922fe2d8bbced6263107 (patch)
tree2b0f6dab987132193d35ffeb81053c7e367ea9ea /clang/lib/Frontend/CacheTokens.cpp
parent4edba2d130ad9217a6ba85870224cf6a84cc8770 (diff)
downloadbcm5719-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.cpp13
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)) {
OpenPOWER on IntegriCloud