summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization/ASTReader.cpp
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2016-05-14 06:24:14 +0000
committerSean Callanan <scallanan@apple.com>2016-05-14 06:24:14 +0000
commitf3682a7014ed837535d6fe3aa96fb648e39fa3ff (patch)
tree5d5a44ffc5e4ed329c96df31d69d99765fc06e67 /clang/lib/Serialization/ASTReader.cpp
parentf94ef1df8bd820852c35ece8a9d1253ee07247cb (diff)
downloadbcm5719-llvm-f3682a7014ed837535d6fe3aa96fb648e39fa3ff.tar.gz
bcm5719-llvm-f3682a7014ed837535d6fe3aa96fb648e39fa3ff.zip
Update identifiers as needed when loading macros from serialized ASTs.
This is essential for iterating across macros properly, which LLDB does when loading macros from modules. A naiver version of this patch (without the conditional) caused assertion failures in the testsuite, but this version should be safe. Thanks to Ben Langmuir for the refinement that made this work. llvm-svn: 269554
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
-rw-r--r--clang/lib/Serialization/ASTReader.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index 0f4a7d32667..8650ce75769 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -1680,9 +1680,12 @@ void ASTReader::ReadDefinedMacros() {
break;
case PP_MACRO_OBJECT_LIKE:
- case PP_MACRO_FUNCTION_LIKE:
- getLocalIdentifier(*I, Record[0]);
+ case PP_MACRO_FUNCTION_LIKE: {
+ IdentifierInfo *II = getLocalIdentifier(*I, Record[0]);
+ if (II->isOutOfDate())
+ updateOutOfDateIdentifier(*II);
break;
+ }
case PP_TOKEN:
// Ignore tokens.
OpenPOWER on IntegriCloud