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