summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2012-01-03 17:31:38 +0000
committerDouglas Gregor <dgregor@apple.com>2012-01-03 17:31:38 +0000
commite097d4ba268d4a04845d23143672953d9efb6302 (patch)
tree5e289a0008ef1e43e256e00939366e9eaa07ec85 /clang/lib/Serialization
parent2c46b5bd0754767a6dbfdc9881fc733a760311ec (diff)
downloadbcm5719-llvm-e097d4ba268d4a04845d23143672953d9efb6302.tar.gz
bcm5719-llvm-e097d4ba268d4a04845d23143672953d9efb6302.zip
Don't attempt to merge a deserialized declaration with existing
declarations in the AST unless modules are enabled. This case doesn't come up with precompiled headers, and it isn't cheap. llvm-svn: 147451
Diffstat (limited to 'clang/lib/Serialization')
-rw-r--r--clang/lib/Serialization/ASTReaderDecl.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp
index abab88a9c6c..82f6fae4a03 100644
--- a/clang/lib/Serialization/ASTReaderDecl.cpp
+++ b/clang/lib/Serialization/ASTReaderDecl.cpp
@@ -1512,6 +1512,10 @@ ASTDeclReader::VisitRedeclarable(Redeclarable<T> *D) {
template<typename T>
void ASTDeclReader::mergeRedeclarable(Redeclarable<T> *D,
RedeclarableResult &Redecl) {
+ // If modules are not available, there is no reason to perform this merge.
+ if (!Reader.getContext().getLangOptions().Modules)
+ return;
+
if (FindExistingResult ExistingRes = findExisting(static_cast<T*>(D))) {
if (T *Existing = ExistingRes) {
T *ExistingCanon = Existing->getCanonicalDecl();
OpenPOWER on IntegriCloud