[modules] Fix macro hiding bug exposed if:
authorRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 18 Jul 2014 04:53:37 +0000 (04:53 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 18 Jul 2014 04:53:37 +0000 (04:53 +0000)
commit3965412f088ccdab52b897f89f29b937269e26fd
tree2b3d9c4d94583597d02fa77fb0dc40df68013ec1
parentc4158e862f078508a5d54e92b6a6f3081488f559
[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. =(

llvm-svn: 213348
clang/include/clang/Serialization/ASTReader.h
clang/lib/Serialization/ASTReader.cpp
clang/lib/Serialization/ASTWriter.cpp
clang/test/Modules/Inputs/macro-hiding/a1.h [new file with mode: 0644]
clang/test/Modules/Inputs/macro-hiding/a2.h [new file with mode: 0644]
clang/test/Modules/Inputs/macro-hiding/b1.h [new file with mode: 0644]
clang/test/Modules/Inputs/macro-hiding/b2.h [new file with mode: 0644]
clang/test/Modules/Inputs/macro-hiding/c1.h [new file with mode: 0644]
clang/test/Modules/Inputs/macro-hiding/module.modulemap [new file with mode: 0644]
clang/test/Modules/macro-hiding.cpp [new file with mode: 0644]