PTH generation: Clear the cleaning bit for literals (whose spellings are cached).

llvm-svn: 65148
This commit is contained in:
Ted Kremenek 2009-02-20 20:32:39 +00:00
parent 1608df5319
commit 01144480fd
1 changed files with 6 additions and 2 deletions

View 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);