On Mon, Jun 22, 2015 at 4:55 PM, Sean Silva <[email protected]> wrote:
> 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? > More-or-less, yes. -emit-module is what we run internally when we implicitly build a module. The input file is the module map, -fmodule-name= specifies which module to build, and the output goes to the module cache if no -o option is explicitly specified. > -- Sean Silva > > On Mon, Jun 22, 2015 at 3:20 PM, Richard Smith <[email protected] > > wrote: > >> Author: rsmith >> Date: Mon Jun 22 17:20:47 2015 >> New Revision: 240350 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=240350&view=rev >> Log: >> [modules] When building a module, if there are multiple matches for a >> header >> file in the loaded module maps and one of them is from the current module, >> that's the right match. >> >> Added: >> cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/ >> cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/a.h >> cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/b.h >> cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/map >> cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/x.h >> cfe/trunk/test/Modules/explicit-build-prefer-self.cpp >> Modified: >> cfe/trunk/lib/Lex/ModuleMap.cpp >> >> Modified: cfe/trunk/lib/Lex/ModuleMap.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/ModuleMap.cpp?rev=240350&r1=240349&r2=240350&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/Lex/ModuleMap.cpp (original) >> +++ cfe/trunk/lib/Lex/ModuleMap.cpp Mon Jun 22 17:20:47 2015 >> @@ -346,6 +346,9 @@ ModuleMap::KnownHeader ModuleMap::findMo >> ModuleMap::KnownHeader Result; >> // 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) >> + return MakeResult(H); >> // Cannot use a module if it is unavailable. >> if (!H.getModule()->isAvailable()) >> continue; >> >> Added: cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/a.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/a.h?rev=240350&view=auto >> >> ============================================================================== >> --- cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/a.h (added) >> +++ cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/a.h Mon Jun >> 22 17:20:47 2015 >> @@ -0,0 +1,2 @@ >> +// a >> +#include "x.h" >> >> Added: cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/b.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/b.h?rev=240350&view=auto >> >> ============================================================================== >> --- cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/b.h (added) >> +++ cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/b.h Mon Jun >> 22 17:20:47 2015 >> @@ -0,0 +1,2 @@ >> +// b >> +#include "x.h" >> >> Added: cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/map >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/map?rev=240350&view=auto >> >> ============================================================================== >> --- cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/map (added) >> +++ cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/map Mon Jun >> 22 17:20:47 2015 >> @@ -0,0 +1,2 @@ >> +module a { header "a.h" header "x.h" } >> +module b { header "b.h" header "x.h" } >> >> Added: cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/x.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/explicit-build-prefer-self/x.h?rev=240350&view=auto >> >> ============================================================================== >> (empty) >> >> Added: cfe/trunk/test/Modules/explicit-build-prefer-self.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/explicit-build-prefer-self.cpp?rev=240350&view=auto >> >> ============================================================================== >> --- cfe/trunk/test/Modules/explicit-build-prefer-self.cpp (added) >> +++ cfe/trunk/test/Modules/explicit-build-prefer-self.cpp Mon Jun 22 >> 17:20:47 2015 >> @@ -0,0 +1,3 @@ >> +// RUN: rm -rf %t >> +// RUN: %clang_cc1 -fmodules -fno-implicit-modules -emit-module >> -fmodule-name=a %S/Inputs/explicit-build-prefer-self/map -o a.pcm >> +// RUN: %clang_cc1 -fmodules -fno-implicit-modules -emit-module >> -fmodule-name=b %S/Inputs/explicit-build-prefer-self/map -o b.pcm >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >> > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
