1 // RUN: rm -rf %t 2 // RUN: cd %S 3 // 4 // RUN: %clang_cc1 -fmodules -x c++ -std=c++11 \ 5 // RUN: -I Inputs/stress1 \ 6 // RUN: -fno-implicit-modules \ 7 // RUN: -fmodules-cache-path=%t \ 8 // RUN: -fmodule-map-file-home-is-cwd \ 9 // RUN: -emit-module -fmodule-name=m00 -o %t/m00.pcm \ 10 // RUN: Inputs/stress1/module.modulemap 11 // 12 // RUN: %clang_cc1 -fmodules -x c++ -std=c++11 \ 13 // RUN: -I Inputs/stress1 \ 14 // RUN: -fno-implicit-modules \ 15 // RUN: -fmodules-cache-path=%t \ 16 // RUN: -fmodule-map-file-home-is-cwd \ 17 // RUN: -emit-module -fmodule-name=m00 -o %t/m00_check.pcm \ 18 // RUN: Inputs/stress1/module.modulemap 19 // 20 // RUN: diff %t/m00.pcm %t/m00_check.pcm 21 // 22 // RUN: %clang_cc1 -fmodules -x c++ -std=c++11 -fdelayed-template-parsing \ 23 // RUN: -I Inputs/stress1 \ 24 // RUN: -fno-implicit-modules \ 25 // RUN: -fmodules-cache-path=%t \ 26 // RUN: -fmodule-map-file-home-is-cwd \ 27 // RUN: -emit-module -fmodule-name=m01 -o %t/m01.pcm \ 28 // RUN: Inputs/stress1/module.modulemap 29 // 30 // RUN: %clang_cc1 -fmodules -x c++ -std=c++11 -fdelayed-template-parsing \ 31 // RUN: -I Inputs/stress1 \ 32 // RUN: -fno-implicit-modules \ 33 // RUN: -fmodules-cache-path=%t \ 34 // RUN: -fmodule-map-file-home-is-cwd \ 35 // RUN: -emit-module -fmodule-name=m01 -o %t/m01_check.pcm \ 36 // RUN: Inputs/stress1/module.modulemap 37 // 38 // RUN: diff %t/m01.pcm %t/m01_check.pcm 39 // 40 // RUN: %clang_cc1 -fmodules -x c++ -std=c++11 \ 41 // RUN: -I Inputs/stress1 \ 42 // RUN: -fno-implicit-modules \ 43 // RUN: -fmodules-cache-path=%t \ 44 // RUN: -fmodule-map-file-home-is-cwd \ 45 // RUN: -emit-module -fmodule-name=m02 -o %t/m02.pcm \ 46 // RUN: Inputs/stress1/module.modulemap 47 // 48 // RUN: %clang_cc1 -fmodules -x c++ -std=c++11 \ 49 // RUN: -I Inputs/stress1 \ 50 // RUN: -fno-implicit-modules \ 51 // RUN: -fmodules-cache-path=%t \ 52 // RUN: -fmodule-map-file-home-is-cwd \ 53 // RUN: -emit-module -fmodule-name=m03 -o %t/m03.pcm \ 54 // RUN: Inputs/stress1/module.modulemap 55 // 56 // RUN: %clang_cc1 -fmodules -x c++ -std=c++11 \ 57 // RUN: -I Inputs/stress1 \ 58 // RUN: -fno-implicit-modules \ 59 // RUN: -fmodules-cache-path=%t \ 60 // RUN: -fmodule-map-file-home-is-cwd \ 61 // RUN: -fmodule-file=%t/m00.pcm \ 62 // RUN: -fmodule-file=%t/m01.pcm \ 63 // RUN: -fmodule-file=%t/m02.pcm \ 64 // RUN: -fmodule-file=%t/m03.pcm \ 65 // RUN: -emit-module -fmodule-name=merge00 -o %t/merge00.pcm \ 66 // RUN: Inputs/stress1/module.modulemap 67 // 68 // RUN: %clang_cc1 -fmodules -x c++ -std=c++11 \ 69 // RUN: -I Inputs/stress1 \ 70 // RUN: -fno-implicit-modules \ 71 // RUN: -fmodules-cache-path=%t \ 72 // RUN: -fmodule-map-file-home-is-cwd \ 73 // RUN: -fmodule-file=%t/m00.pcm \ 74 // RUN: -fmodule-file=%t/m01.pcm \ 75 // RUN: -fmodule-file=%t/m02.pcm \ 76 // RUN: -fmodule-file=%t/m03.pcm \ 77 // RUN: -emit-module -fmodule-name=merge00 -o %t/merge00_check.pcm \ 78 // RUN: Inputs/stress1/module.modulemap 79 // 80 // RUN: diff %t/merge00.pcm %t/merge00_check.pcm 81 // 82 // RUN: %clang_cc1 -fmodules -x c++ -std=c++11 \ 83 // RUN: -I Inputs/stress1 \ 84 // RUN: -fno-implicit-modules \ 85 // RUN: -fmodules-cache-path=%t \ 86 // RUN: -fmodule-map-file-home-is-cwd \ 87 // RUN: -fmodule-map-file=Inputs/stress1/module.modulemap \ 88 // RUN: -fmodule-file=%t/m00.pcm \ 89 // RUN: -fmodule-file=%t/m01.pcm \ 90 // RUN: -fmodule-file=%t/m02.pcm \ 91 // RUN: -fmodule-file=%t/m03.pcm \ 92 // RUN: -fmodule-file=%t/merge00.pcm \ 93 // RUN: -verify stress1.cpp -S -emit-llvm -o %t/stress1.ll 94 // 95 // RUN: %clang_cc1 -fmodules -x c++ -std=c++11 \ 96 // RUN: -I Inputs/stress1 \ 97 // RUN: -fno-implicit-modules \ 98 // RUN: -fmodules-cache-path=%t \ 99 // RUN: -fmodule-map-file-home-is-cwd \ 100 // RUN: -fmodule-map-file=Inputs/stress1/module.modulemap \ 101 // RUN: -fmodule-file=%t/m00.pcm \ 102 // RUN: -fmodule-file=%t/m01.pcm \ 103 // RUN: -fmodule-file=%t/m02.pcm \ 104 // RUN: -fmodule-file=%t/m03.pcm \ 105 // RUN: -fmodule-file=%t/merge00.pcm \ 106 // RUN: -verify stress1.cpp -S -emit-llvm -o %t/stress1_check.ll 107 // 108 // RUN: diff -u %t/stress1.ll %t/stress1_check.ll 109 // 110 // RUN: %clang_cc1 -fmodules -x c++ -std=c++11 \ 111 // RUN: -I Inputs/stress1 \ 112 // RUN: -fmodules-cache-path=%t \ 113 // RUN: -fmodule-map-file-home-is-cwd \ 114 // RUN: -fmodule-file=%t/m00.pcm \ 115 // RUN: -fmodule-file=%t/m01.pcm \ 116 // RUN: -fmodule-file=%t/m02.pcm \ 117 // RUN: -fmodule-file=%t/m03.pcm \ 118 // RUN: -emit-module -fmodule-name=merge00 -o /dev/null \ 119 // RUN: -DMERGE_NO_REEXPORT \ 120 // RUN: Inputs/stress1/module.modulemap 121 // 122 // expected-no-diagnostics 123 124 #include "m00.h" 125 #include "m01.h" 126 #include "m02.h" 127 #include "m03.h" 128 129 #include "merge00.h" 130 131 int f() { return N01::S00('a').method00('b') + (int)N00::S00(42) + function00(42) + g(); } 132 133 int f2() { 134 return pragma_weak00() + pragma_weak01() + pragma_weak02() + 135 pragma_weak03 + pragma_weak04 + pragma_weak05; 136 } 137