diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-07-18 22:13:40 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-07-18 22:13:40 +0000 |
commit | 23f37c4b1d1c4c6e5919ac54d416e98bd8bdda1a (patch) | |
tree | 72e793d37b07b7d60aea6e7edcc7be821946bf25 /include/clang/Serialization | |
parent | d098c0238243483b4f463f04730fc3ce492b90ea (diff) |
Reinstate r213348, reverted in r213395, with an additional bug fix and more
thorough tests.
Original commit message:
[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@213416 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; |