diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-07-18 04:53:37 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-07-18 04:53:37 +0000 |
commit | fdee4dcca3472941066cceb288fcb7c8f4856fa1 (patch) | |
tree | 703268dcf40b8b3ec66b62598b9adde37553b25f /include/clang/Serialization | |
parent | e0eea0c6faf28d50c6e8f7ed5cf25ff0dd03f2cc (diff) |
[modules] Fix macro hiding bug exposed if:
* A submodule of module A is imported into module B
* Another submodule of module A that is not imported into B exports a macro
* Some submodule of module B also exports a definition of the macro, and
happens to be the first submodule of B that imports module A.
In this case, we would incorrectly determine that A's macro redefines B's
macro, and so we don't need to re-export B's macro at all.
This happens with the 'assert' macro in an LLVM self-host. =(
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213348 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Serialization')
-rw-r--r-- | include/clang/Serialization/ASTReader.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/clang/Serialization/ASTReader.h b/include/clang/Serialization/ASTReader.h index 0698b98abb..3f44440d4b 100644 --- a/include/clang/Serialization/ASTReader.h +++ b/include/clang/Serialization/ASTReader.h @@ -1366,7 +1366,8 @@ public: bool Complain); /// \brief Make the names within this set of hidden names visible. - void makeNamesVisible(const HiddenNames &Names, Module *Owner); + void makeNamesVisible(const HiddenNames &Names, Module *Owner, + bool FromFinalization); /// \brief Set the AST callbacks listener. void setListener(ASTReaderListener *listener) { @@ -1831,7 +1832,7 @@ public: ModuleFile &M, uint64_t Offset); void installImportedMacro(IdentifierInfo *II, ModuleMacroInfo *MMI, - Module *Owner); + Module *Owner, bool FromFinalization); typedef llvm::TinyPtrVector<DefMacroDirective *> AmbiguousMacros; llvm::DenseMap<IdentifierInfo*, AmbiguousMacros> AmbiguousMacroDefs; |