From: Ted Kremenek Date: Fri, 20 Feb 2009 20:32:39 +0000 (+0000) Subject: PTH generation: Clear the cleaning bit for literals (whose spellings are cached). X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f259f0fa621d24a44a78c61ca5d61944d892cba8;p=clang PTH generation: Clear the cleaning bit for literals (whose spellings are cached). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65148 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Driver/CacheTokens.cpp b/Driver/CacheTokens.cpp index d2921f0152..d36b0b4c88 100644 --- a/Driver/CacheTokens.cpp +++ b/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 *E = - &CachedStrs.GetOrCreateValue(s, s+spelling.size()); + &CachedStrs.GetOrCreateValue(s, s+spelling.size()); if (!E->getValue().hasOffset()) { E->getValue().setOffset(CurStrOffset);