diff options
| author | Douglas Gregor <dgregor@apple.com> | 2012-01-03 17:31:38 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2012-01-03 17:31:38 +0000 |
| commit | e097d4ba268d4a04845d23143672953d9efb6302 (patch) | |
| tree | 5e289a0008ef1e43e256e00939366e9eaa07ec85 /clang | |
| parent | 2c46b5bd0754767a6dbfdc9881fc733a760311ec (diff) | |
| download | bcm5719-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')
| -rw-r--r-- | clang/lib/Serialization/ASTReaderDecl.cpp | 4 | ||||
| -rw-r--r-- | clang/test/Modules/redecl-merge.m | 4 |
2 files changed, 6 insertions, 2 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(); diff --git a/clang/test/Modules/redecl-merge.m b/clang/test/Modules/redecl-merge.m index 4ea982b50fe..ab264d1c5b0 100644 --- a/clang/test/Modules/redecl-merge.m +++ b/clang/test/Modules/redecl-merge.m @@ -1,6 +1,6 @@ // RUN: rm -rf %t -// RUN: %clang_cc1 -fmodule-cache-path %t -I %S/Inputs %s -verify -// RUN: %clang_cc1 -x objective-c++ -fmodule-cache-path %t -I %S/Inputs %s -verify +// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -I %S/Inputs %s -verify +// RUN: %clang_cc1 -x objective-c++ -fmodules -fmodule-cache-path %t -I %S/Inputs %s -verify @class C2; @class C3; @class C3; |

