<div dir="ltr">What exactly does -emit-module do here? Is it basically like a PCH build step, but where the passed-in module map drives what clang does?<div><br></div><div>-- Sean Silva</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jun 22, 2015 at 3:20 PM, Richard Smith <span dir="ltr"><<a href="mailto:richard-llvm@metafoo.co.uk" target="_blank">richard-llvm@metafoo.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rsmith<br>
Date: Mon Jun 22 17:20:47 2015<br>
New Revision: 240350<br>
<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D240350-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=GXTAvYh9wJK5vcErArzCm04C06IC-qgVucZ7ppX-Xxo&s=7DNO-lsusgBhSiE6lB5c4G3DWrJkGU7TALL_bPkGFeo&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=240350&view=rev</a><br>
Log:<br>
[modules] When building a module, if there are multiple matches for a header<br>
file in the loaded module maps and one of them is from the current module,<br>
that's the right match.<br>
<br>
Added:<br>
    cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/<br>
    cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/a.h<br>
    cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/b.h<br>
    cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/map<br>
    cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/x.h<br>
    cfe/trunk/test/Modules/explicit-build-prefer-self.cpp<br>
Modified:<br>
    cfe/trunk/lib/Lex/ModuleMap.cpp<br>
<br>
Modified: cfe/trunk/lib/Lex/ModuleMap.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Lex_ModuleMap.cpp-3Frev-3D240350-26r1-3D240349-26r2-3D240350-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=GXTAvYh9wJK5vcErArzCm04C06IC-qgVucZ7ppX-Xxo&s=GWMFGmVGooe8skGaERle2qM5ZfF6TMxobEhNLAUBqKQ&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/ModuleMap.cpp?rev=240350&r1=240349&r2=240350&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Lex/ModuleMap.cpp (original)<br>
+++ cfe/trunk/lib/Lex/ModuleMap.cpp Mon Jun 22 17:20:47 2015<br>
@@ -346,6 +346,9 @@ ModuleMap::KnownHeader ModuleMap::findMo<br>
     ModuleMap::KnownHeader Result;<br>
     // Iterate over all modules that 'File' is part of to find the best fit.<br>
     for (KnownHeader &H : Known->second) {<br>
+      // Prefer a header from the current module over all others.<br>
+      if (H.getModule() == CompilingModule)<br>
+        return MakeResult(H);<br>
       // Cannot use a module if it is unavailable.<br>
       if (!H.getModule()->isAvailable())<br>
         continue;<br>
<br>
Added: cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/a.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Modules_Inputs_explicit-2Dbuild-2Dprefer-2Dself_a.h-3Frev-3D240350-26view-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=GXTAvYh9wJK5vcErArzCm04C06IC-qgVucZ7ppX-Xxo&s=6OO7GQQJumgddCEvBJESHcOxYLhwf2CYXK6Ad2kC4Sk&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/a.h?rev=240350&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/a.h (added)<br>
+++ cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/a.h Mon Jun 22 17:20:47 2015<br>
@@ -0,0 +1,2 @@<br>
+// a<br>
+#include "x.h"<br>
<br>
Added: cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/b.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Modules_Inputs_explicit-2Dbuild-2Dprefer-2Dself_b.h-3Frev-3D240350-26view-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=GXTAvYh9wJK5vcErArzCm04C06IC-qgVucZ7ppX-Xxo&s=02s3AYXfViqgU8ZsqsXQT-2KN7dYUvI44zPXx_wB_RY&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/b.h?rev=240350&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/b.h (added)<br>
+++ cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/b.h Mon Jun 22 17:20:47 2015<br>
@@ -0,0 +1,2 @@<br>
+// b<br>
+#include "x.h"<br>
<br>
Added: cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/map<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Modules_Inputs_explicit-2Dbuild-2Dprefer-2Dself_map-3Frev-3D240350-26view-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=GXTAvYh9wJK5vcErArzCm04C06IC-qgVucZ7ppX-Xxo&s=Wfcwo7V4nyue0sVGG66F9KofsJHDuzfP8reMy_XkCOY&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/map?rev=240350&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/map (added)<br>
+++ cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/map Mon Jun 22 17:20:47 2015<br>
@@ -0,0 +1,2 @@<br>
+module a { header "a.h" header "x.h" }<br>
+module b { header "b.h" header "x.h" }<br>
<br>
Added: cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/x.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Modules_Inputs_explicit-2Dbuild-2Dprefer-2Dself_x.h-3Frev-3D240350-26view-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=GXTAvYh9wJK5vcErArzCm04C06IC-qgVucZ7ppX-Xxo&s=POZtyi7mcuVA5sQfjMKDF9jLdZSfY3rsVx9ZWXB9FVI&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/x.h?rev=240350&view=auto</a><br>
==============================================================================<br>
    (empty)<br>
<br>
Added: cfe/trunk/test/Modules/explicit-build-prefer-self.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Modules_explicit-2Dbuild-2Dprefer-2Dself.cpp-3Frev-3D240350-26view-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=GXTAvYh9wJK5vcErArzCm04C06IC-qgVucZ7ppX-Xxo&s=qx_6yJezLHAcMNd6shRfj9GOtwMA_59prTNxxFi1vcc&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/explicit-build-prefer-self.cpp?rev=240350&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/test/Modules/explicit-build-prefer-self.cpp (added)<br>
+++ cfe/trunk/test/Modules/explicit-build-prefer-self.cpp Mon Jun 22 17:20:47 2015<br>
@@ -0,0 +1,3 @@<br>
+// RUN: rm -rf %t<br>
+// RUN: %clang_cc1 -fmodules -fno-implicit-modules -emit-module -fmodule-name=a %S/Inputs/explicit-build-prefer-self/map -o a.pcm<br>
+// RUN: %clang_cc1 -fmodules -fno-implicit-modules -emit-module -fmodule-name=b %S/Inputs/explicit-build-prefer-self/map -o b.pcm<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>