On Tue, Jun 23, 2015 at 12:40 PM, Richard Smith <[email protected]> wrote:
> 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. > Neat, thanks. -- Sean Silva > > >> -- 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
