llvm-project/clang/test/Modules/Inputs
Ben Langmuir beee15e721 Allow multiple modules with the same name to coexist in the module cache
To differentiate between two modules with the same name, we will
consider the path the module map file that they are defined by* part of
the ‘key’ for looking up the precompiled module (pcm file).
Specifically, this patch renames the precompiled module (pcm) files from
  cache-path/<module hash>/Foo.pcm
to
  cache-path/<module hash>/Foo-<hash of module map path>.pcm

In addition, I’ve taught the ASTReader to re-resolve the names of
imported modules during module loading so that if the header search
context changes between when a module was originally built and when it
is loaded we can rebuild it if necessary.  For example, if module A
imports module B

first time:
clang -I /path/to/A -I /path/to/B ...

second time:
clang -I /path/to/A -I /different/path/to/B ...

will now rebuild A as expected.

* in the case of inferred modules, we use the module map file that
allowed the inference, not the __inferred_module.map file, since the
inferred file path is the same for every inferred module.

llvm-svn: 206201
2014-04-14 18:00:01 +00:00
..
AlsoDependsOnModule.framework/Headers Inferred framework modules automatically export anything they import 2011-12-05 17:40:25 +00:00
CmdLine.framework/Headers
Conflicts <rdar://problem/12368093> Extend module maps with a 'conflict' declaration, and warn when a newly-imported module conflicts with an already-imported module. 2013-03-20 21:10:35 +00:00
DependsOnModule.framework Allow a new syntax in a module requires-declaration: 2013-10-28 22:18:19 +00:00
HasSubModules.framework Change this comment to helpfully explain why it's there. 2013-02-13 03:34:21 +00:00
Modified <rdar://problem/13037793> Allow the names of modules to differ from the name of their subdirectory in the include path. 2013-03-21 01:08:50 +00:00
Module.framework Infer "link" lines for top-level frameworks. Essentially, a framework 2013-01-14 17:57:51 +00:00
ModuleDiags When building a module, forward diagnostics to the outer diagnostic consumer. 2013-05-03 22:58:43 +00:00
ModuleMapLocations Add a new spelling for module map files 'module.modulemap' 2014-03-19 20:23:34 +00:00
MutuallyRecursive1.framework/Headers Use @import rather than @__experimental_modules_import, since the 2012-12-11 22:11:52 +00:00
MutuallyRecursive2.framework/Headers Use @import rather than @__experimental_modules_import, since the 2012-12-11 22:11:52 +00:00
NoUmbrella.framework Infer "link" lines for top-level frameworks. Essentially, a framework 2013-01-14 17:57:51 +00:00
NotAModule.framework/Headers Introduce inferred framework modules into the module map file, 2012-11-06 19:39:40 +00:00
StdDef <rdar://problem/13479214> Make Clang's <stddef.h> robust against system headers defining size_t/ptrdiff_t/wchar_t. 2013-03-22 00:10:49 +00:00
System/usr/include Note when a decl is used in AST files. 2013-09-05 00:02:25 +00:00
declare-use Use the expansion location of the file name when finding the module. 2014-03-19 10:22:36 +00:00
elsewhere Module [extern_c] attribute: inherit to submodules, don't write 'extern "C"' 2014-03-08 00:03:56 +00:00
exclude-header If a header is explicitly included in module A, and excluded from an umbrella 2014-04-08 13:13:04 +00:00
include-relative If a module map is found in a relative -I path, convert the filenames within it 2014-03-11 02:02:47 +00:00
macro-undef-through-pch PR19215: When writing/reading a PCH that imported a module, store the location 2014-03-21 00:33:59 +00:00
malformed Fix module name collision in tests. 2013-11-23 05:21:32 +00:00
modular_maps Revert "Modules: Make missing headers in a module.map a warning not an error." 2013-12-16 14:57:22 +00:00
modules-with-same-name Allow multiple modules with the same name to coexist in the module cache 2014-04-14 18:00:01 +00:00
normal-module-map Add missing header from 165821 2012-10-12 21:17:34 +00:00
odr Basic ODR checking for C++ modules: 2013-10-18 06:05:18 +00:00
oldname <rdar://problem/13037793> Allow the names of modules to differ from the name of their subdirectory in the include path. 2013-03-21 01:08:50 +00:00
private Test files for private header patch. 2013-06-20 21:15:51 +00:00
private0 Test files for private header patch. 2013-06-20 21:15:51 +00:00
private1 Use the same SourceManager for ModuleMaps and compilations. 2013-10-24 07:51:24 +00:00
private2 Use the same SourceManager for ModuleMaps and compilations. 2013-10-24 07:51:24 +00:00
separate_map_tree Allow a header to be part of multiple modules. 2013-10-22 08:09:47 +00:00
string_names Allow string literals as module names. 2013-12-06 09:25:54 +00:00
subdir Test module lookup within a subdirectory of a normal include directory. 2012-01-29 16:43:46 +00:00
submodules Fix comment typo in test. 2014-01-31 22:28:08 +00:00
template-specialization-visibility When a type's definition is instantiated, the definition becomes visible, even 2014-03-10 00:04:29 +00:00
unnecessary-module-map-parsing Modules: Don't warn upon missing headers while reading the module map. 2013-12-17 10:31:37 +00:00
update-after-load If a visibility update record is found for a DeclContext after that Decl has 2014-03-11 03:10:46 +00:00
wildcard-submodule-exports Use @import rather than @__experimental_modules_import, since the 2012-12-11 22:11:52 +00:00
MethodPoolA.h Order the methods in the global method pool based on when they become visible, not when they become deserialized <rdar://problem/13203033>. 2013-02-12 23:36:21 +00:00
MethodPoolASub.h Order the methods in the global method pool based on when they become visible, not when they become deserialized <rdar://problem/13203033>. 2013-02-12 23:36:21 +00:00
MethodPoolASub2.h Add missing header from r174648 2013-02-07 19:15:44 +00:00
MethodPoolB.h Whenever Sema attempts to look in the global method pool, try to load 2012-01-25 00:59:09 +00:00
MethodPoolBSub.h When building a module, keep *all* declared methods in the global method pool. 2013-06-21 00:20:25 +00:00
MethodPoolBSub2.h Add test header missing from r184504. 2013-06-21 00:22:44 +00:00
autolink-sub.h Implement parsing, AST, (de-)serialization, and placeholder global 2013-01-14 17:21:00 +00:00
autolink-sub2.h Implement parsing, AST, (de-)serialization, and placeholder global 2013-01-14 17:21:00 +00:00
autolink-sub3.h Fix autolinking when modules are imported in pch files 2014-01-31 01:06:56 +00:00
autolink-sub3.pch Fix autolinking when modules are imported in pch files 2014-01-31 01:06:56 +00:00
autolink.h Implement parsing, AST, (de-)serialization, and placeholder global 2013-01-14 17:21:00 +00:00
builtin.h <rdar://problem/13560075> Teach name lookup for builtin names to find hidden declarations. 2013-04-03 23:06:26 +00:00
builtin_sub.h <rdar://problem/13560075> Teach name lookup for builtin names to find hidden declarations. 2013-04-03 23:06:26 +00:00
c-header-bad.h Add [extern_c] attribute for modules, allowing a C module to be imported within an extern "C" block in C++ code. 2014-03-02 05:58:18 +00:00
c-header.h Add [extern_c] attribute for modules, allowing a C module to be imported within an extern "C" block in C++ code. 2014-03-02 05:58:18 +00:00
category_bottom.h Use @import rather than @__experimental_modules_import, since the 2012-12-11 22:11:52 +00:00
category_left.h Use @import rather than @__experimental_modules_import, since the 2012-12-11 22:11:52 +00:00
category_left_sub.h Treat hidden Objective-C protocol definitions as if they were 2013-01-17 00:38:46 +00:00
category_other.h Use @import rather than @__experimental_modules_import, since the 2012-12-11 22:11:52 +00:00
category_right.h Use @import rather than @__experimental_modules_import, since the 2012-12-11 22:11:52 +00:00
category_right_sub.h Treat hidden Objective-C protocol definitions as if they were 2013-01-17 00:38:46 +00:00
category_top.h Treat hidden Objective-C protocol definitions as if they were 2013-01-17 00:38:46 +00:00
config.h <rdar://problem/10796651> Introduce configuration macros into module maps. 2013-03-20 00:22:05 +00:00
cxx-decls-imported.h Map from local decl IDs to global decl IDs when lazily deserializing friend decl chains. 2013-08-30 00:23:29 +00:00
cxx-decls-unimported.h If an unimported submodule of an imported module contains a declaration of a 2013-07-14 02:01:48 +00:00
cxx-header.h Add [extern_c] attribute for modules, allowing a C module to be imported within an extern "C" block in C++ code. 2014-03-02 05:58:18 +00:00
cxx-inline-namespace-b.h Add missing file from r204570. 2014-03-23 21:01:41 +00:00
cxx-inline-namespace.h If a name is injected into an imported inline namespace without reopening that 2014-03-23 20:41:56 +00:00
cxx-irgen-left.h If an update record makes a declaration interesting, pass it to the consumer. 2014-03-23 00:27:18 +00:00
cxx-irgen-right.h Emit an update record if we instantiate the definition of a function template 2014-03-22 23:33:22 +00:00
cxx-irgen-top.h If an update record makes a declaration interesting, pass it to the consumer. 2014-03-23 00:27:18 +00:00
cxx-linkage-cache.h Fix a bug reduced from a crash when trying to use modules with libc++. We check 2013-02-12 05:48:23 +00:00
cxx-many-overloads.h Fix stack overflow and improve performance when a module contains many 2013-02-08 00:37:45 +00:00
cxx-templates-a.h If a template instantation introduces a name into a namespace, we need to write 2014-03-23 02:30:01 +00:00
cxx-templates-b-impl.h When we perform dependent name lookup during template instantiation, it's not 2013-07-25 23:08:39 +00:00
cxx-templates-b.h When we inject a declaration into a namespace, add the primary DeclContext to 2014-03-23 19:45:26 +00:00
cxx-templates-c.h Test that we can merge together explicit and partial specializations from 2013-10-15 23:19:58 +00:00
cxx-templates-common.h When we inject a declaration into a namespace, add the primary DeclContext to 2014-03-23 19:45:26 +00:00
decl.h When name lookup comes across a declaration that is in a module that 2011-12-14 16:03:29 +00:00
decl2.h Fix chaining of ObjCInterfaceDecl redeclarations 2011-12-16 03:12:41 +00:00
def-include.h When inferring a submodule ID during module creation, look up the 2012-01-06 17:19:32 +00:00
def.h C++ modules: fix a bug where loading a declaration with some name would prevent 2013-09-09 07:34:56 +00:00
diag_pragma.h [modules] Make sure enabled diagnostic pragmas inside the module don't affect the translation unit that 2013-03-27 17:17:23 +00:00
diamond.h Use @import rather than @__experimental_modules_import, since the 2012-12-11 22:11:52 +00:00
diamond_bottom.h Use @import rather than @__experimental_modules_import, since the 2012-12-11 22:11:52 +00:00
diamond_left.h Use @import rather than @__experimental_modules_import, since the 2012-12-11 22:11:52 +00:00
diamond_right.h Use @import rather than @__experimental_modules_import, since the 2012-12-11 22:11:52 +00:00
diamond_top.h
dummy.h Map from local decl IDs to global decl IDs when lazily deserializing friend decl chains. 2013-08-30 00:23:29 +00:00
ignored_macros.h Detect when we end up trying to load conflicting module files. 2013-02-06 22:40:31 +00:00
import-decl.h Fix ASTReader handling of ImportDecls, from Meador Inge! 2012-05-16 16:31:58 +00:00
incomplete_mod.h Add -Wincomplete-module, which detects when a header is included from a module but isn't itself part of a module. 2013-05-20 13:49:41 +00:00
incomplete_mod_missing.h Add -Wincomplete-module, which detects when a header is included from a module but isn't itself part of a module. 2013-05-20 13:49:41 +00:00
initializer_list C++ modules: don't lose track of a 'namespace std' that is imported from a module. 2013-10-18 06:54:39 +00:00
irgen.h Switch some more of the modules tests over to "-emit-module-from-map", 2011-11-16 00:21:54 +00:00
linkage-merge-bar.h Add a module testcase with a using declaration. 2013-04-05 00:52:14 +00:00
linkage-merge-foo.h Add a module testcase with a using declaration. 2013-04-05 00:52:14 +00:00
linkage-merge-sub.h When name lookup for a redeclaration finds declarations that are known 2013-01-09 00:47:56 +00:00
load_failure.h
lookup_left.h
lookup_left.hpp
lookup_right.h
lookup_right.hpp Prior to adding the new "expected-no-diagnostics" directive to VerifyDiagnosticConsumer, make the necessary adjustment to 580 test-cases which will henceforth require this new directive. 2012-10-19 12:44:48 +00:00
macros.h Introduce builtin macros to determine whether we're building a 2012-09-25 15:44:52 +00:00
macros_left.h [preprocessor] Allow comparing two macro definitions syntactically instead of only lexically. 2013-04-03 17:39:30 +00:00
macros_other.h If a module A exports a macro M, and a module B imports that macro and #undef's 2014-03-01 00:08:04 +00:00
macros_right.h If a module A exports a macro M, and a module B imports that macro and #undef's 2014-03-01 00:08:04 +00:00
macros_right_undef.h If a module A exports a macro M, and a module B imports that macro and #undef's 2014-03-01 00:08:04 +00:00
macros_top.h Fix crash if a submodule overrides one of its own macros, and add support for 2014-03-06 03:16:27 +00:00
macros_top_b.h Fix crash if a submodule overrides one of its own macros, and add support for 2014-03-06 03:16:27 +00:00
macros_top_c.h Fix crash if a submodule overrides one of its own macros, and add support for 2014-03-06 03:16:27 +00:00
module.map If a name is injected into an imported inline namespace without reopening that 2014-03-23 20:41:56 +00:00
module_private_left.h When performing name lookup for a redeclaration, ignore module 2011-12-20 18:11:52 +00:00
module_private_right.h When performing name lookup for a redeclaration, ignore module 2011-12-20 18:11:52 +00:00
namespaces-left.h Save out a correct lookup table if a lookup table entry is stale (it contains 2014-03-25 01:14:22 +00:00
namespaces-right.h Fix handling of module imports adding names to a DeclContext after qualified 2013-02-07 03:37:08 +00:00
namespaces-top.h Save out a correct lookup table if a lookup table entry is stale (it contains 2014-03-25 01:14:22 +00:00
pch-used.h Note when a decl is used in AST files. 2013-09-05 00:02:25 +00:00
point.h
recursive1.h If a #include finds a file relative to the current file, don't forget to check 2014-03-05 20:51:45 +00:00
recursive2.h If a #include finds a file relative to the current file, don't forget to check 2014-03-05 20:51:45 +00:00
recursive_visibility_a1_inner.h Include non-explicit submodules in exported module list 2013-11-04 21:51:33 +00:00
recursive_visibility_a2_more_inner.h Include non-explicit submodules in exported module list 2013-11-04 21:51:33 +00:00
recursive_visibility_b.h Include non-explicit submodules in exported module list 2013-11-04 21:51:33 +00:00
recursive_visibility_c.h Include non-explicit submodules in exported module list 2013-11-04 21:51:33 +00:00
redecl-merge-bottom-prefix.h [Modules] Cope better with top-level declarations loaded after being declared in the current translation unit <rdar://problem/13189985>. 2013-02-11 18:16:18 +00:00
redecl-merge-bottom.h [Modules] Cope better with top-level declarations loaded after being declared in the current translation unit <rdar://problem/13189985>. 2013-02-11 18:16:18 +00:00
redecl-merge-left-left.h Use @import rather than @__experimental_modules_import, since the 2012-12-11 22:11:52 +00:00
redecl-merge-left.h Ensure that the identifier chains have the most recent declaration after module deserialization. 2013-02-18 15:53:43 +00:00
redecl-merge-right.h Ensure that the identifier chains have the most recent declaration after module deserialization. 2013-02-18 15:53:43 +00:00
redecl-merge-top-explicit.h When we're performing name lookup for a tag, we still allow ourselves 2012-01-05 01:11:47 +00:00
redecl-merge-top.h Ensure that the identifier chains have the most recent declaration after module deserialization. 2013-02-18 15:53:43 +00:00
redecl_namespaces_left.h There's some code in the PCH reader that looks like it's needlessly complex, but 2012-04-12 07:56:21 +00:00
redecl_namespaces_right.h There's some code in the PCH reader that looks like it's needlessly complex, but 2012-04-12 07:56:21 +00:00
redeclarations_left.h Switch the remaining modules tests over to -emit-module-from-map. 2011-11-16 15:22:03 +00:00
redeclarations_right.h Switch the remaining modules tests over to -emit-module-from-map. 2011-11-16 15:22:03 +00:00
templates-left.h When merging class definitions across modules in C++, merge together fields. 2013-10-07 08:02:11 +00:00
templates-right.h When merging class definitions across modules in C++, merge together fields. 2013-10-07 08:02:11 +00:00
templates-top.h When merging class definitions across modules in C++, merge together fields. 2013-10-07 08:02:11 +00:00
using-decl-a.h Make UsingShadowDecls redeclarable. This fixes some visibility problems with 2013-10-23 02:17:46 +00:00
using-decl-b.h Make UsingShadowDecls redeclarable. This fixes some visibility problems with 2013-10-23 02:17:46 +00:00
warning.h [Modules] If a module map resides in a system header directory, treat it as a system module. 2013-06-21 16:28:10 +00:00
weird_objc.h Merge "special" types from different modules in the AST reader. 2013-02-01 23:45:03 +00:00