1 // RUN: rm -rf %t && mkdir -p %t 2 // RUN: split-file %s %t 3 4 //--- module.modulemap 5 module Mod { header "mod.h" } 6 //--- mod.h 7 //--- tu.c 8 #include "mod.h" 9 10 //--- one/foo.h 11 //--- two/foo.h 12 13 // By default, mismatched header search paths are ignored, old PCM file gets reused. 14 // 15 // RUN: %clang_cc1 -fmodules -fmodule-map-file=%t/module.modulemap -fmodules-cache-path=%t/cache1 -fdisable-module-hash \ 16 // RUN: -fsyntax-only %t/tu.c -I %t/one 17 // RUN: %clang_cc1 -fmodules -fmodule-map-file=%t/module.modulemap -fmodules-cache-path=%t/cache1 -fdisable-module-hash \ 18 // RUN: -fsyntax-only %t/tu.c -I %t/two -Rmodule-build 2>&1 \ 19 // RUN: | FileCheck %s --allow-empty --check-prefix=DID-REUSE 20 // DID-REUSE-NOT: remark: building module 'Mod' 21 // 22 // RUN: %clang_cc1 -module-file-info %t/cache1/Mod.pcm | FileCheck %s --check-prefix=HS-PATHS 23 // HS-PATHS: Header search paths: 24 // HS-PATHS-NEXT: User entries: 25 // HS-PATHS-NEXT: one 26 27 // When skipping serialization of header search paths, mismatches cannot be detected, old PCM file gets reused. 28 // 29 // RUN: %clang_cc1 -fmodules -fmodule-map-file=%t/module.modulemap -fmodules-cache-path=%t/cache2 -fdisable-module-hash \ 30 // RUN: -fsyntax-only %t/tu.c -fmodules-skip-header-search-paths -I %t/one 31 // RUN: %clang_cc1 -fmodules -fmodule-map-file=%t/module.modulemap -fmodules-cache-path=%t/cache2 -fdisable-module-hash \ 32 // RUN: -fsyntax-only %t/tu.c -fmodules-skip-header-search-paths -I %t/two -Rmodule-build 2>&1 \ 33 // RUN: | FileCheck %s --check-prefix=DID-REUSE --allow-empty 34 // 35 // RUN: %clang_cc1 -module-file-info %t/cache2/Mod.pcm | FileCheck %s --check-prefix=NO-HS-PATHS 36 // NO-HS-PATHS-NOT: Header search paths: 37