llvm-project/clang/test/Modules
Ben Langmuir 487ea14a46 Add a "signature" to AST files to verify that they haven't changed
Since the order of the IDs in the AST file (e.g. DeclIDs, SelectorIDs)
is not stable, it is not safe to load an AST file that depends on
another AST file that has been rebuilt since the importer was built,
even if "nothing changed". We previously used size and modtime to check
this, but I've seen cases where a module rebuilt quickly enough to foil
this check and caused very hard to debug build errors.

To save cycles when we're loading the AST, we just generate a random
nonce value and check that it hasn't changed when we load an imported
module, rather than actually hash the whole file.

This is slightly complicated by the fact that we need to verify the
signature inside addModule, since we might otherwise consider that a
mdoule is "OutOfDate" when really it is the importer that is out of
date. I didn't see any regressions in module load time after this
change.

llvm-svn: 220493
2014-10-23 18:05:36 +00:00
..
Inputs Revert accidentally-committed files in r220460. 2014-10-23 02:02:31 +00:00
macro-reexport [modules] Substantially improve handling of #undef: 2014-07-25 04:40:03 +00:00
redecls Allow multiple modules with the same name to coexist in the module cache 2014-04-14 18:00:01 +00:00
self-import-header clang/test/Modules/self-import-header/test.m: Add explicit -target. 2013-05-16 06:59:30 +00:00
Rmodule-build.m Extend -Rmodule-build to also remark when module building finishes. 2014-10-14 02:08:30 +00:00
Werror-Wsystem-headers.m test: Disable standard system includes in %clang_cc1 2014-10-03 22:18:49 +00:00
Werror.m Reapply r207477 and r207479 without cyclic dependency 2014-04-29 16:25:26 +00:00
add-remove-private.m Verify all the module map files for a pcm are the same on load 2014-08-12 16:42:33 +00:00
auto-module-import.m Generate a marker token when entering or leaving a submodule when building a 2013-11-23 04:06:09 +00:00
autolink.m Improve robustness of tests for module flags metadata 2014-06-19 16:10:21 +00:00
build-fail-notes.m Add 'not' to commands that are expected to fail. 2013-07-04 16:16:58 +00:00
builtins.m <rdar://problem/13560075> Teach name lookup for builtin names to find hidden declarations. 2013-04-03 23:06:26 +00:00
compiler_builtins.m Avoid names like __in that conflict with SAL in builtin headers 2013-04-19 17:00:14 +00:00
compiler_builtins_arm.m Remove REQUIRES lines from portable tests 2014-06-25 22:46:44 +00:00
config_macros.m Require a module.map file to load a module 2014-01-22 23:19:39 +00:00
conflicts.m <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
cstd.m [modules] Add support for #include_next. 2014-10-20 00:15:49 +00:00
cxx-decls.cpp [modules] Make NamespaceAliasDecl redeclarable, as it should be. This fixes 2014-09-03 23:11:22 +00:00
cxx-inline-namespace.cpp If a name is injected into an imported inline namespace without reopening that 2014-03-23 20:41:56 +00:00
cxx-irgen.cpp clang/test/Modules/cxx-irgen.cpp: Let it tolerant of x86_thiscallcc. 2014-08-14 00:23:30 +00:00
cxx-linkage-cache.cpp 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-lookup.cpp [modules] When performing a lookup into a namespace, ensure that any later 2014-08-13 01:23:33 +00:00
cxx-many-overloads.cpp Fix conflict between r174685 and r174645 (rename -fmodule-cache-path <foo> to -fmodules-cache-path=<foo>). 2013-02-08 01:35:44 +00:00
cxx-templates.cpp [modules] When building an injected-class-name type, we may have to insert it 2014-10-21 21:15:18 +00:00
cycles.c Add 'not' to commands that are expected to fail. 2013-07-04 16:16:58 +00:00
declare-use.S modify declare-use.S to work when full toolchain not present 2014-03-18 12:25:27 +00:00
declare-use1.cpp Modules: Let -fmodules-decluse ignore headers that aren't in a module 2013-12-11 12:13:00 +00:00
declare-use2.cpp Change layering warning tests to not actually build modules. 2013-12-11 09:11:12 +00:00
declare-use3.cpp Use the expansion location of the file name when finding the module. 2014-03-19 10:22:36 +00:00
declare-use4.cpp Use the expansion location of the file name when finding the module. 2014-03-19 10:22:36 +00:00
decldef.m During typo correction, check for an exact match in an unimported module. If we 2013-08-20 20:35:18 +00:00
decldef.mm If a declaration is loaded, and then a module import adds a redeclaration, then 2014-05-16 23:01:30 +00:00
dependency-dump-dependent-module.m Disable Modules/dependency-dump-dependent-module.m on win32 for now. 2014-06-20 15:04:25 +00:00
dependency-dump.m test: Just check the VFS when testing module-dependency-dump 2014-06-19 20:18:00 +00:00
dependency-gen-inferred-map.m [Modules] Make sure that the synthesized file "__inferred_module.map" doesn't show up as dependency of a module file. 2014-03-14 02:26:31 +00:00
dependency-gen-pch.m Allow multiple modules with the same name to coexist in the module cache 2014-04-14 18:00:01 +00:00
dependency-gen.m test: Disable standard system includes in %clang_cc1 2014-10-03 22:18:49 +00:00
diag-pragma.c Require a module.map file to load a module 2014-01-22 23:19:39 +00:00
diamond-pch.c Allow multiple modules with the same name to coexist in the module cache 2014-04-14 18:00:01 +00:00
diamond.c Require a module.map file to load a module 2014-01-22 23:19:39 +00:00
direct-module-import.m Rename -fmodule-cache-path <blah> to -fmodules-cache-path=<blah> for consistency. 2013-02-07 19:01:24 +00:00
driver.c Fix FileCheck --check-prefix lines. 2013-08-12 12:51:05 +00:00
epic-fail.m Add 'not' to commands that are expected to fail. 2013-07-04 16:16:58 +00:00
exclude-header.c If a header is explicitly included in module A, and excluded from an umbrella 2014-04-08 13:13:04 +00:00
explicit-build.cpp [modules] Initial support for explicitly loading .pcm files. 2014-10-22 02:05:46 +00:00
extern_c.cpp Module [extern_c] attribute: inherit to submodules, don't write 'extern "C"' 2014-03-08 00:03:56 +00:00
extern_c_bad.cpp 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
fatal-module-loader-error.m libclang: report error code for bad PCH files 2014-02-12 19:12:37 +00:00
filename.cpp Default getFile() to use the last accessed name in the FileEntry. 2014-08-13 12:34:41 +00:00
fmodules-validate-once-per-build-session.c Don't use find | xargs in test/Modules/fmodules-validate-once-per-build-session.c 2014-02-12 11:50:37 +00:00
global_index.m Rename -fmodule-cache-path <blah> to -fmodules-cache-path=<blah> for consistency. 2013-02-07 19:01:24 +00:00
header-import.m Rename -fmodule-cache-path <blah> to -fmodules-cache-path=<blah> for consistency. 2013-02-07 19:01:24 +00:00
ignored_macros.m Rename -fmodule-cache-path <blah> to -fmodules-cache-path=<blah> for consistency. 2013-02-07 19:01:24 +00:00
implementation-of-module.m Add stopgap option -fmodule-implementation-of <name> 2014-07-23 15:30:23 +00:00
import-decl.cpp Modules: Teach the preprocessor to recognize 'import' only after an '@'. 2013-11-07 22:55:02 +00:00
import-self.m Make module self-import an error 2014-05-05 05:31:33 +00:00
include-relative.c clang/test/Modules/include-relative.c REQUIRES shell due to chdir. 2014-03-11 09:00:49 +00:00
include_next.c [modules] Add support for #include_next. 2014-10-20 00:15:49 +00:00
incomplete-module.m 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
inferred-framework-case.m Try harder to supress the test from r212975 on Windows 2014-07-14 21:14:28 +00:00
inferred-frameworks.m Rename -fmodule-cache-path <blah> to -fmodules-cache-path=<blah> for consistency. 2013-02-07 19:01:24 +00:00
inferred-submodules.m Rename -fmodule-cache-path <blah> to -fmodules-cache-path=<blah> for consistency. 2013-02-07 19:01:24 +00:00
initializer_list.cpp 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.c Require a module.map file to load a module 2014-01-22 23:19:39 +00:00
linkage-merge.cpp DR101, PR12770: If a function is declared in the same context as a 2014-02-06 01:31:33 +00:00
linkage-merge.m Require a module.map file to load a module 2014-01-22 23:19:39 +00:00
load-after-failure.m Fix use-after-free and spurious error during module load 2014-05-19 16:13:45 +00:00
load_failure.c Require a module.map file to load a module 2014-01-22 23:19:39 +00:00
lookup.cpp Require a module.map file to load a module 2014-01-22 23:19:39 +00:00
lookup.m Require a module.map file to load a module 2014-01-22 23:19:39 +00:00
macro-hiding.cpp [modules] Fix some of the confusion when computing the override set for a macro 2014-07-21 04:10:40 +00:00
macro-undef-through-pch.m Allow multiple modules with the same name to coexist in the module cache 2014-04-14 18:00:01 +00:00
macros.c [modules] Weaken an out-of-date assertion: an #undef can have no location if we 2014-08-09 01:24:07 +00:00
macros2.c Fix crash if a submodule overrides one of its own macros, and add support for 2014-03-06 03:16:27 +00:00
malformed.cpp Fix module name collision in tests. 2013-11-23 05:21:32 +00:00
merge-typedefs.cpp Fix typo. 2014-08-25 23:33:46 +00:00
merge-using-decls.cpp [modules] Merging for class-scope using-declarations. 2014-10-14 02:00:47 +00:00
method_pool.m When building a module, keep *all* declared methods in the global method pool. 2013-06-21 00:20:25 +00:00
missing-header.m Don't build modules with (submodules with) missing headers 2014-04-18 22:07:31 +00:00
missing-submodule.m Do not print inferred submodules explicitly in __inferred_module.map 2014-04-23 21:10:46 +00:00
modify-module.m <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
modular_maps.cpp PR21215: Support -fmodule-map-file being specified multiple times. Support 2014-10-17 01:42:53 +00:00
module-private.cpp Require a module.map file to load a module 2014-01-22 23:19:39 +00:00
module_file_info.m test: Disable standard system includes in %clang_cc1 2014-10-03 22:18:49 +00:00
modulemap-locations.m Add a new spelling for module map files 'module.modulemap' 2014-03-19 20:23:34 +00:00
modules-with-same-name.m Allow multiple modules with the same name to coexist in the module cache 2014-04-14 18:00:01 +00:00
namespaces.cpp Render anonymous entities as '(anonymous <thing>)' (and lambdas as '(lambda at ... )') 2014-04-02 05:58:29 +00:00
no-stale-modtime.m Use -Rblah, not -Wblah, to control remark diagnostics. This was always the 2014-08-07 00:24:21 +00:00
normal-module-map.cpp During typo correction, check for an exact match in an unimported module. If we 2013-08-20 20:35:18 +00:00
objc-categories.m Require a module.map file to load a module 2014-01-22 23:19:39 +00:00
objc_redef.m Require a module.map file to load a module 2014-01-22 23:19:39 +00:00
odr.cpp [modules] Fix false report of an ODR violation when merging friend 2014-08-25 02:10:01 +00:00
on-demand-build.m Extended VerifyDiagnosticConsumer to also verify source file for diagnostic. 2013-04-17 08:06:46 +00:00
on-demand-macros.m Rename -fmodule-cache-path <blah> to -fmodules-cache-path=<blah> for consistency. 2013-02-07 19:01:24 +00:00
pch-used.m Fix PCHs that import more than one module 2014-09-08 20:36:26 +00:00
pr19692.cpp PR19692: Add (passing) regression test. 2014-09-15 22:14:48 +00:00
pr20399.cpp PR20399: Do not assert when adding an implicit member coming from a module at 2014-09-30 00:45:29 +00:00
pr20786.cpp Oops, use correct RUN: line for test. 2014-08-28 21:09:23 +00:00
preprocess.m Remove a couple of fixed paths that snuck into my test from 217550 2014-09-10 21:41:43 +00:00
private.cpp Test files for private header patch. 2013-06-20 21:15:51 +00:00
private1.cpp Use the same SourceManager for ModuleMaps and compilations. 2013-10-24 07:51:24 +00:00
prune.m Fix find command in test/Modules/prune.m broken by r206201 2014-04-14 18:50:28 +00:00
rebuild.m Add a "signature" to AST files to verify that they haven't changed 2014-10-23 18:05:36 +00:00
recursive.c clang/test/Modules/recursive.c: Tweak expressions for win32. 2014-03-06 00:12:04 +00:00
recursive_visibility.mm Include non-explicit submodules in exported module list 2013-11-04 21:51:33 +00:00
redecl-add-after-load.cpp If two sibling modules declare the same entity, and we indirectly pull a 2014-05-19 20:59:20 +00:00
redecl-merge.m Extended VerifyDiagnosticConsumer to also verify source file for diagnostic. 2013-04-17 08:06:46 +00:00
redecl-merge2.m [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-namespaces.mm Require a module.map file to load a module 2014-01-22 23:19:39 +00:00
redeclarations.m Require a module.map file to load a module 2014-01-22 23:19:39 +00:00
renamed.m Move the input files for the unnecessary-module-map-parsing test to Inputs. 2013-12-13 10:08:24 +00:00
require-modular-includes.m Remove -Wnon-modular-include 2014-05-08 18:09:29 +00:00
requires.m Allow a new syntax in a module requires-declaration: 2013-10-28 22:18:19 +00:00
requires.mm Allow a new syntax in a module requires-declaration: 2013-10-28 22:18:19 +00:00
resolution-change.m [modules] Initial support for explicitly loading .pcm files. 2014-10-22 02:05:46 +00:00
separate_map_tree.cpp Allow a header to be part of multiple modules. 2013-10-22 08:09:47 +00:00
serialized-diags.m Remove forward slashes from check; should unbreak Windows buildbots. 2013-05-06 15:42:15 +00:00
stddef.c Fix interaction of max_align_t and modules. 2014-10-03 00:31:35 +00:00
stddef.m <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
strict-decluse.cpp Add -fmodules-strict-decluse to check that all headers are in modules 2014-04-11 11:47:45 +00:00
string_names.cpp Allow string literals as module names. 2013-12-06 09:25:54 +00:00
subframework-from-intermediate-path.m Prevent lookup of subframework modules by name without parent framework 2014-03-20 18:27:26 +00:00
subframeworks.m During typo correction, check for an exact match in an unimported module. If we 2013-08-20 20:35:18 +00:00
submodules-preprocess.cpp Rename -fmodule-cache-path <blah> to -fmodules-cache-path=<blah> for consistency. 2013-02-07 19:01:24 +00:00
submodules.cpp Make module self-import an error 2014-05-05 05:31:33 +00:00
submodules.m Rename -fmodule-cache-path <blah> to -fmodules-cache-path=<blah> for consistency. 2013-02-07 19:01:24 +00:00
system_headers.m Fix interaction of max_align_t and modules. 2014-10-03 00:31:35 +00:00
system_version.m Allow multiple modules with the same name to coexist in the module cache 2014-04-14 18:00:01 +00:00
template-specialization-visibility.cpp If an instantiation of a template is required to be a complete type, check 2014-05-07 02:25:43 +00:00
templates-2.mm [modules] Turn off a broken optimization: we need to pick up implicit special 2014-08-14 20:30:52 +00:00
templates.mm CodeGen: ConstStructBuilder must verify packed constraints after padding 2014-10-19 23:40:06 +00:00
textual-headers.cpp Revert accidentally-committed files in r220460. 2014-10-23 02:02:31 +00:00
undefined-type-fixit1.cpp Initial implementation of -modules-earch-all option, for searching for symbols in non-imported modules. 2014-04-23 12:57:01 +00:00
unnecessary-module-map-parsing.c Modules: Don't warn upon missing headers while reading the module map. 2013-12-17 10:31:37 +00:00
update-after-load.cpp If a visibility update record is found for a DeclContext after that Decl has 2014-03-11 03:10:46 +00:00
using-decl.cpp Make UsingShadowDecls redeclarable. This fixes some visibility problems with 2013-10-23 02:17:46 +00:00
va_list.m Move the initialization of VAListTagName after InitializeSema() 2014-09-05 20:24:27 +00:00
validate-system-headers.m test: Disable standard system includes in %clang_cc1 2014-10-03 22:18:49 +00:00
warn-unused-local-typedef.cpp Fix test to not write output to the test directory, as it may not be writable. 2014-09-07 16:59:13 +00:00
wildcard-submodule-exports.cpp Rename -fmodule-cache-path <blah> to -fmodules-cache-path=<blah> for consistency. 2013-02-07 19:01:24 +00:00