| // Check that the presence of non-affecting module map files does not affect the |
| // contents of PCM files. |
| |
| // RUN: rm -rf %t && mkdir %t |
| // RUN: split-file %s %t |
| |
| //--- a/module.modulemap |
| module a {} |
| |
| //--- b/module.modulemap |
| module b {} |
| |
| //--- c/module.modulemap |
| module c { header "c.h" } |
| //--- c/c.h |
| @import b; |
| |
| //--- tu.m |
| @import c; |
| |
| //--- explicit-mms-common-args.rsp |
| -fmodule-map-file=b/module.modulemap -fmodule-map-file=c/module.modulemap -fmodules -fmodules-cache-path=cache -fdisable-module-hash -fsyntax-only tu.m |
| //--- implicit-search-args.rsp |
| -I a -I b -I c -fimplicit-module-maps -fmodules -fmodules-cache-path=cache -fdisable-module-hash -fsyntax-only tu.m |
| //--- implicit-search-args.rsp-end |
| |
| // Test with explicit module map files. |
| // |
| // RUN: %clang_cc1 -working-directory %t @%t/explicit-mms-common-args.rsp |
| // RUN: mv %t/cache %t/cache-explicit-no-a-prune |
| // RUN: %clang_cc1 -working-directory %t @%t/explicit-mms-common-args.rsp -fno-modules-prune-non-affecting-module-map-files |
| // RUN: mv %t/cache %t/cache-explicit-no-a-keep |
| // |
| // RUN: %clang_cc1 -working-directory %t -fmodule-map-file=a/module.modulemap @%t/explicit-mms-common-args.rsp |
| // RUN: mv %t/cache %t/cache-explicit-a-prune |
| // RUN: %clang_cc1 -working-directory %t -fmodule-map-file=a/module.modulemap @%t/explicit-mms-common-args.rsp -fno-modules-prune-non-affecting-module-map-files |
| // RUN: mv %t/cache %t/cache-explicit-a-keep |
| // |
| // RUN: diff %t/cache-explicit-no-a-prune/c.pcm %t/cache-explicit-a-prune/c.pcm |
| // RUN: not diff %t/cache-explicit-no-a-keep/c.pcm %t/cache-explicit-a-keep/c.pcm |
| |
| // Test with implicit module map search. |
| // |
| // RUN: %clang_cc1 -working-directory %t @%t/implicit-search-args.rsp |
| // RUN: mv %t/cache %t/cache-implicit-no-a-prune |
| // RUN: %clang_cc1 -working-directory %t @%t/implicit-search-args.rsp -fno-modules-prune-non-affecting-module-map-files |
| // RUN: mv %t/cache %t/cache-implicit-no-a-keep |
| // |
| // FIXME: Instead of removing "a/module.modulemap" from the file system, we |
| // could drop the "-I a" search path argument in combination with the |
| // "-fmodules-skip-header-search-paths" flag. Unfortunately, that flag |
| // does not prevent serialization of the search path usage bit vector, |
| // making the files differ anyways. |
| // RUN: rm %t/a/module.modulemap |
| // |
| // RUN: %clang_cc1 -working-directory %t @%t/implicit-search-args.rsp |
| // RUN: mv %t/cache %t/cache-implicit-a-prune |
| // RUN: %clang_cc1 -working-directory %t @%t/implicit-search-args.rsp -fno-modules-prune-non-affecting-module-map-files |
| // RUN: mv %t/cache %t/cache-implicit-a-keep |
| // |
| // RUN: diff %t/cache-implicit-no-a-prune/c.pcm %t/cache-implicit-a-prune/c.pcm |
| // RUN: not diff %t/cache-implicit-no-a-keep/c.pcm %t/cache-implicit-a-keep/c.pcm |