diff options
| author | Ted Kremenek <kremenek@apple.com> | 2009-02-20 20:32:39 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2009-02-20 20:32:39 +0000 |
| commit | 01144480fd89d9579edfb4b817a33198e1b1b961 (patch) | |
| tree | 32c65f63245efbdff7fbc0e02f6ffe56c77f30d1 /clang | |
| parent | 1608df531971fe79d791be027106a26c1f210405 (diff) | |
| download | bcm5719-llvm-01144480fd89d9579edfb4b817a33198e1b1b961.tar.gz bcm5719-llvm-01144480fd89d9579edfb4b817a33198e1b1b961.zip | |
PTH generation: Clear the cleaning bit for literals (whose spellings are cached).
llvm-svn: 65148
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/Driver/CacheTokens.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/clang/Driver/CacheTokens.cpp b/clang/Driver/CacheTokens.cpp index d2921f0152c..d36b0b4c881 100644 --- a/clang/Driver/CacheTokens.cpp +++ b/clang/Driver/CacheTokens.cpp @@ -430,8 +430,12 @@ uint32_t PTHWriter::ResolveID(const IdentifierInfo* II) { } void PTHWriter::EmitToken(const Token& T) { + // When writing out the token data for literals, clear the NeedsCleaning flag. + uint32_t CleaningMask = T.isLiteral() ? ~((uint32_t)Token::NeedsCleaning):~0U; + + // Emit the token kind, flags, and length. Emit32(((uint32_t) T.getKind()) | - (((uint32_t) T.getFlags()) << 8) | + ((((uint32_t) T.getFlags()) & CleaningMask) << 8)| (((uint32_t) T.getLength()) << 16)); // Literals (strings, numbers, characters) get cached spellings. @@ -443,7 +447,7 @@ void PTHWriter::EmitToken(const Token& T) { // Get the string entry. llvm::StringMapEntry<OffsetOpt> *E = - &CachedStrs.GetOrCreateValue(s, s+spelling.size()); + &CachedStrs.GetOrCreateValue(s, s+spelling.size()); if (!E->getValue().hasOffset()) { E->getValue().setOffset(CurStrOffset); |

