]> granicus.if.org Git - clang/commitdiff
PTH generation: Clear the cleaning bit for literals (whose spellings are cached).
authorTed Kremenek <kremenek@apple.com>
Fri, 20 Feb 2009 20:32:39 +0000 (20:32 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 20 Feb 2009 20:32:39 +0000 (20:32 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65148 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/CacheTokens.cpp

index d2921f0152c738bbd905d5138e432491e017835a..d36b0b4c88127756b68c2430ea311150363e391f 100644 (file)
@@ -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);