]> granicus.if.org Git - clang/commitdiff
[modules] Fix "prefer own module over others" rule when selecting a module for a...
authorRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 10 Jul 2015 20:09:49 +0000 (20:09 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 10 Jul 2015 20:09:49 +0000 (20:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241936 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Lex/ModuleMap.cpp
test/Modules/Inputs/explicit-build-prefer-self/map

index e6fe38927e26fb950ff370e1de7d4853dc8af0fb..6faae818bc183f481a5c0d551a3b0d9407c07ab5 100644 (file)
@@ -347,7 +347,7 @@ ModuleMap::KnownHeader ModuleMap::findModuleForHeader(const FileEntry *File) {
     // Iterate over all modules that 'File' is part of to find the best fit.
     for (KnownHeader &H : Known->second) {
       // Prefer a header from the current module over all others.
-      if (H.getModule() == CompilingModule)
+      if (H.getModule()->getTopLevelModule() == CompilingModule)
         return MakeResult(H);
       // Cannot use a module if it is unavailable.
       if (!H.getModule()->isAvailable())
index 26be8e690736ed80092ec9f78a14b5582c20b6bc..042b2ae5b507dacf9d52526b05749380d8683dac 100644 (file)
@@ -1,2 +1,2 @@
-module a { header "a.h" header "x.h" }
-module b { header "b.h" header "x.h" }
+module a { module h { header "a.h" } module x { header "x.h" } }
+module b { module h { header "b.h" } module x { header "x.h" } }