diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-02-27 01:13:51 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-02-27 01:13:51 +0000 |
commit | 1ebefc72e80cc880be376a8704e6936d2746cb35 (patch) | |
tree | 7bf0c5c8322de0858a223e642ca3695dac81909e | |
parent | 664e860beb2550bef24fb8946192f61648a71d7f (diff) |
[PCH] When deserializing an IdentifierInfo, call IdentifierInfo::RevertTokenIDToIdentifier() only when it's not already an identifier.
Fixes an assertion hit.
rdar://13288735
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176148 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Serialization/ASTReader.cpp | 2 | ||||
-rw-r--r-- | test/Index/index-pch.cpp | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index 4c11f38395..24073df3ec 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -538,7 +538,7 @@ IdentifierInfo *ASTIdentifierLookupTrait::ReadData(const internal_key_type& k, // 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 && diff --git a/test/Index/index-pch.cpp b/test/Index/index-pch.cpp index c8da7b2fbf..caab2d7f97 100644 --- a/test/Index/index-pch.cpp +++ b/test/Index/index-pch.cpp @@ -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 {}; |