r176148 - [PCH] When deserializing an IdentifierInfo, call IdentifierInfo::RevertTokenIDToIdentifier() only when it's not already an identifier.

Argyrios Kyrtzidis akyrtzi at gmail.com
Tue Feb 26 17:13:51 PST 2013


Author: akirtzidis
Date: Tue Feb 26 19:13:51 2013
New Revision: 176148

URL: http://llvm.org/viewvc/llvm-project?rev=176148&view=rev
Log:
[PCH] When deserializing an IdentifierInfo, call IdentifierInfo::RevertTokenIDToIdentifier() only when it's not already an identifier.

Fixes an assertion hit.
rdar://13288735

Modified:
    cfe/trunk/lib/Serialization/ASTReader.cpp
    cfe/trunk/test/Index/index-pch.cpp

Modified: cfe/trunk/lib/Serialization/ASTReader.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=176148&r1=176147&r2=176148&view=diff
==============================================================================
--- cfe/trunk/lib/Serialization/ASTReader.cpp (original)
+++ cfe/trunk/lib/Serialization/ASTReader.cpp Tue Feb 26 19:13:51 2013
@@ -538,7 +538,7 @@ IdentifierInfo *ASTIdentifierLookupTrait
 
   // Set or check the various bits in the IdentifierInfo structure.
   // Token IDs are read-only.
-  if (HasRevertedTokenIDToIdentifier)
+  if (HasRevertedTokenIDToIdentifier && II->getTokenID() != tok::identifier)
     II->RevertTokenIDToIdentifier();
   II->setObjCOrBuiltinID(ObjCOrBuiltinID);
   assert(II->isExtensionToken() == ExtensionToken &&

Modified: cfe/trunk/test/Index/index-pch.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/index-pch.cpp?rev=176148&r1=176147&r2=176148&view=diff
==============================================================================
--- cfe/trunk/test/Index/index-pch.cpp (original)
+++ cfe/trunk/test/Index/index-pch.cpp Tue Feb 26 19:13:51 2013
@@ -1,6 +1,8 @@
 // RUN: c-index-test -write-pch %t.pch -fshort-wchar %s
-// RUN: c-index-test -index-tu %t.pch | FileCheck %s
+// RUN: env LIBCLANG_NOTHREADS=1 c-index-test -index-tu %t.pch | FileCheck %s
 
+// CHECK: [indexDeclaration]: kind: variable | name: wideStr
 const wchar_t *wideStr = L"123";
 
-// CHECK: [indexDeclaration]: kind: variable | name: wideStr
+// CHECK: [indexDeclaration]: kind: struct | name: __is_void
+struct __is_void {};





More information about the cfe-commits mailing list