Clang Project

clang_source_code/test/Driver/cl-pch.cpp
1// Note: %s and %S must be preceded by --, otherwise it may be interpreted as a
2// command-line option, e.g. on Mac where %s is commonly under /Users.
3
4// /Yc
5// RUN: %clang_cl -Werror /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
6// RUN:   | FileCheck -check-prefix=CHECK-YC %s
7// 1. Build .pch file.
8// CHECK-YC: cc1
9// CHECK-YC: -emit-pch
10// CHECK-YC: -building-pch-with-obj
11// CHECK-YC: -o
12// CHECK-YC: pchfile.pch
13// CHECK-YC: -x
14// CHECK-YC: "c++-header"
15// 2. Use .pch file.
16// CHECK-YC: cc1
17// CHECK-YC: -emit-obj
18// CHECK-YC: -building-pch-with-obj
19// CHECK-YC: -include-pch
20// CHECK-YC: pchfile.pch
21
22// /Yc /Fo
23// /Fo overrides the .obj output filename, but not the .pch filename
24// RUN: %clang_cl -Werror /Fomyobj.obj /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
25// RUN:   | FileCheck -check-prefix=CHECK-YCO %s
26// 1. Build .pch file.
27// CHECK-YCO: cc1
28// CHECK-YCO: -emit-pch
29// CHECK-YCO: -building-pch-with-obj
30// CHECK-YCO: -o
31// CHECK-YCO: pchfile.pch
32// 2. Use .pch file.
33// CHECK-YCO: cc1
34// CHECK-YCO: -emit-obj
35// CHECK-YCO: -building-pch-with-obj
36// CHECK-YCO: -include-pch
37// CHECK-YCO: pchfile.pch
38// CHECK-YCO: -o
39// CHECK-YCO: myobj.obj
40
41// /Yc /Y-
42// /Y- disables pch generation
43// RUN: %clang_cl -Werror /Y- /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
44// RUN:   | FileCheck -check-prefix=CHECK-YC-Y_ %s
45// CHECK-YC-Y_-NOT: -emit-pch
46// CHECK-YC-Y_-NOT: -include-pch
47
48// /Yu
49// RUN: %clang_cl -Werror /Yupchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
50// RUN:   | FileCheck -check-prefix=CHECK-YU %s
51// Use .pch file, but don't build it.
52// CHECK-YU-NOT: -emit-pch
53// CHECK-YU-NOT: -building-pch-with-obj
54// CHECK-YU: cc1
55// CHECK-YU: -emit-obj
56// CHECK-YU: -include-pch
57// CHECK-YU: pchfile.pch
58
59// /Yu /Y-
60// RUN: %clang_cl -Werror /Y- /Yupchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
61// RUN:   | FileCheck -check-prefix=CHECK-YU-Y_ %s
62// CHECK-YU-Y_-NOT: -emit-pch
63// CHECK-YU-Y_-NOT: -include-pch
64
65// /Yc /Yu -- /Yc overrides /Yc if they both refer to the same file
66// RUN: %clang_cl -Werror /Ycpchfile.h /Yupchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
67// RUN:   | FileCheck -check-prefix=CHECK-YC-YU %s
68// 1. Build .pch file.
69// CHECK-YC-YU: cc1
70// CHECK-YC-YU: -emit-pch
71// CHECK-YC-YU: -building-pch-with-obj
72// CHECK-YC-YU: -o
73// CHECK-YC-YU: pchfile.pch
74// 2. Use .pch file.
75// CHECK-YC-YU: cc1
76// CHECK-YC-YU: -emit-obj
77// CHECK-YC-YU: -include-pch
78// CHECK-YC-YU: pchfile.pch
79
80// If /Yc /Yu refer to different files, semantics are pretty wonky.  Since this
81// doesn't seem like something that's important in practice, just punt for now.
82// RUN: %clang_cl -Werror /Ycfoo1.h /Yufoo2.h /FIfoo1.h /FIfoo2.h /c -### -- %s 2>&1 \
83// RUN:   | FileCheck -check-prefix=CHECK-YC-YU-MISMATCH %s
84// CHECK-YC-YU-MISMATCH: error: support for '/Yc' and '/Yu' with different filenames not implemented yet; flags ignored
85
86// Similarly, punt on /Yc with more than one input file.
87// RUN: %clang_cl -Werror /Ycfoo1.h /FIfoo1.h /c -### -- %s %s 2>&1 \
88// RUN:   | FileCheck -check-prefix=CHECK-YC-MULTIINPUT %s
89// CHECK-YC-MULTIINPUT: error: support for '/Yc' with more than one source file not implemented yet; flag ignored
90
91// /Yc /Yu /Y-
92// RUN: %clang_cl -Werror /Ycpchfile.h /Yupchfile.h /FIpchfile.h /Y- /c -### -- %s 2>&1 \
93// RUN:   | FileCheck -check-prefix=CHECK-YC-YU-Y_ %s
94// CHECK-YC-YU-Y_-NOT: -emit-pch
95// CHECK-YC-YU-Y_-NOT: -include-pch
96
97// Test computation of pch filename in various cases.
98
99// /Yu /Fpout.pch => out.pch is filename
100// RUN: %clang_cl -Werror /Yupchfile.h /FIpchfile.h /Fpout.pch /c -### -- %s 2>&1 \
101// RUN:   | FileCheck -check-prefix=CHECK-YUFP1 %s
102// Use .pch file, but don't build it.
103// CHECK-YUFP1: -include-pch
104// CHECK-YUFP1: out.pch
105
106// /Yu /Fpout => out.pch is filename (.pch gets added if no extension present)
107// RUN: %clang_cl -Werror /Yupchfile.h /FIpchfile.h /Fpout.pch /c -### -- %s 2>&1 \
108// RUN:   | FileCheck -check-prefix=CHECK-YUFP2 %s
109// Use .pch file, but don't build it.
110// CHECK-YUFP2: -include-pch
111// CHECK-YUFP2: out.pch
112
113// /Yu /Fpout.bmp => out.bmp is filename (.pch not added when extension present)
114// RUN: %clang_cl -Werror /Yupchfile.h /FIpchfile.h /Fpout.bmp /c -### -- %s 2>&1 \
115// RUN:   | FileCheck -check-prefix=CHECK-YUFP3 %s
116// Use .pch file, but don't build it.
117// CHECK-YUFP3: -include-pch
118// CHECK-YUFP3: out.bmp
119
120// /Yusub/dir.h => sub/dir.pch
121// RUN: %clang_cl -Werror /Yusub/pchfile.h /FIsub/pchfile.h /c -### -- %s 2>&1 \
122// RUN:   | FileCheck -check-prefix=CHECK-YUFP4 %s
123// Use .pch file, but don't build it.
124// CHECK-YUFP4: -include-pch
125// CHECK-YUFP4: sub/pchfile.pch
126
127// /Yudir.h /Isub => dir.pch
128// RUN: %clang_cl -Werror /Yupchfile.h /FIpchfile.h /Isub /c -### -- %s 2>&1 \
129// RUN:   | FileCheck -check-prefix=CHECK-YUFP5 %s
130// Use .pch file, but don't build it.
131// CHECK-YUFP5: -include-pch
132// CHECK-YUFP5: pchfile.pch
133
134// FIXME: /Fpdir: use dir/VCx0.pch when dir is directory, where x is major MSVS
135// version in use.
136
137// Spot-check one use of /Fp with /Yc too, else trust the /Yu test cases above
138// also all assume to /Yc.
139// RUN: %clang_cl -Werror /Ycpchfile.h /FIpchfile.h /Fpsub/file.pch /c -### -- %s 2>&1 \
140// RUN:   | FileCheck -check-prefix=CHECK-YCFP %s
141// 1. Build .pch file.
142// CHECK-YCFP: cc1
143// CHECK-YCFP: -emit-pch
144// CHECK-YCFP: -o
145// CHECK-YCFP: sub/file.pch
146// 2. Use .pch file.
147// CHECK-YCFP: cc1
148// CHECK-YCFP: -emit-obj
149// CHECK-YCFP: -include-pch
150// CHECK-YCFP: sub/file.pch
151
152// /Ycfoo2.h /FIfoo1.h /FIfoo2.h /FIfoo3.h
153// => foo1 and foo2 go into pch, foo3 into main compilation
154// /Yc
155// RUN: %clang_cl -Werror /Ycfoo2.h /FIfoo1.h /FIfoo2.h /FIfoo3.h /c -### -- %s 2>&1 \
156// RUN:   | FileCheck -check-prefix=CHECK-YCFIFIFI %s
157// 1. Build .pch file: Includes foo1.h (but NOT foo3.h) and compiles foo2.h
158// CHECK-YCFIFIFI: cc1
159// CHECK-YCFIFIFI: -emit-pch
160// CHECK-YCFIFIFI: -pch-through-header=foo2.h
161// CHECK-YCFIFIFI: -include
162// CHECK-YCFIFIFI: foo1.h
163// CHECK-YCFIFIFI: -include
164// CHECK-YCFIFIFI: foo2.h
165// CHECK-YCFIFIFI: -include
166// CHECK-YCFIFIFI: foo3.h
167// CHECK-YCFIFIFI: -o
168// CHECK-YCFIFIFI: foo2.pch
169// CHECK-YCFIFIFI: -x
170// CHECK-YCFIFIFI: "c++-header"
171// CHECK-YCFIFIFI: cl-pch.cpp
172// 2. Use .pch file: Inlucdes foo2.pch and foo3.h
173// CHECK-YCFIFIFI: cc1
174// CHECK-YCFIFIFI: -emit-obj
175// CHECK-YCFIFIFI: -include-pch
176// CHECK-YCFIFIFI: foo2.pch
177// CHECK-YCFIFIFI: -pch-through-header=foo2.h
178// CHECK-YCFIFIFI: -include
179// CHECK-YCFIFIFI: foo1.h
180// CHECK-YCFIFIFI: -include
181// CHECK-YCFIFIFI: foo2.h
182// CHECK-YCFIFIFI: -include
183// CHECK-YCFIFIFI: foo3.h
184// CHECK-YCFIFIFI: -o
185// CHECK-YCFIFIFI: cl-pch.obj
186// CHECK-YCFIFIFI: -x
187// CHECK-YCFIFIFI: "c++"
188// CHECK-YCFIFIFI: cl-pch.cpp
189
190// /Yufoo2.h /FIfoo1.h /FIfoo2.h /FIfoo3.h
191// => foo1 foo2 filtered out, foo3 into main compilation
192// RUN: %clang_cl -Werror /Yufoo2.h /FIfoo1.h /FIfoo2.h /FIfoo3.h /c -### -- %s 2>&1 \
193// RUN:   | FileCheck -check-prefix=CHECK-YUFIFIFI %s
194// Use .pch file, but don't build it.
195// CHECK-YUFIFIFI-NOT: -emit-pch
196// CHECK-YUFIFIFI: cc1
197// CHECK-YUFIFIFI: -emit-obj
198// CHECK-YUFIFIFI: -include-pch
199// CHECK-YUFIFIFI: foo2.pch
200// CHECK-YUFIFIFI: -pch-through-header=foo2.h
201// CHECK-YUFIFIFI: -include
202// CHECK-YUFIFIFI: foo1.h
203// CHECK-YUFIFIFI: -include
204// CHECK-YUFIFIFI: foo2.h
205// CHECK-YUFIFIFI: -include
206// CHECK-YUFIFIFI: foo3.h
207
208// Test /Ycfoo.h / /Yufoo.h without /FIfoo.h
209// RUN: %clang_cl -Werror /Ycfoo.h /c -### -- %s 2>&1 \
210// RUN:   | FileCheck -check-prefix=CHECK-YC-NOFI %s
211// 1. Precompile
212// CHECK-YC-NOFI: cc1
213// CHECK-YC-NOFI: -emit-pch
214// CHECK-YC-NOFI: -pch-through-header=foo.h
215// CHECK-YC-NOFI: -o
216// CHECK-YC-NOFI: foo.pch
217// CHECK-YC-NOFI: -x
218// CHECK-YC-NOFI: c++-header
219// CHECK-YC-NOFI: cl-pch.cpp
220// 2. Build PCH object
221// CHECK-YC-NOFI: cc1
222// CHECK-YC-NOFI: -emit-obj
223// CHECK-YC-NOFI: -include-pch
224// CHECK-YC-NOFI: foo.pch
225// CHECK-YC-NOFI: -pch-through-header=foo.h
226// CHECK-YC-NOFI: -x
227// CHECK-YC-NOFI: c++
228// CHECK-YC-NOFI: cl-pch.cpp
229// RUN: %clang_cl -Werror /Yufoo.h /c -### -- %s 2>&1 \
230// RUN:   | FileCheck -check-prefix=CHECK-YU-NOFI %s
231// CHECK-YU-NOFI: cc1
232// CHECK-YU-NOFI: -emit-obj
233// CHECK-YU-NOFI: -include-pch
234// CHECK-YU-NOFI: foo.pch
235// CHECK-YU-NOFI: -pch-through-header=foo.h
236// CHECK-YU-NOFI: -x
237// CHECK-YU-NOFI: c++
238// CHECK-YU-NOFI: cl-pch.cpp
239
240// With an actual /I argument.
241// RUN: %clang_cl -Werror /Ifoo /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
242// RUN:   | FileCheck -check-prefix=CHECK-YC-I3 %s
243// 1. This writes pchfile.pch into the root dir, even if this will pick up
244//    foo/pchfile.h
245// CHECK-YC-I3: cc1
246// CHECK-YC-I3: -emit-pch
247// CHECK-YC-I3: -o
248// CHECK-YC-I3: pchfile.pch
249// 2. Use .pch file.
250// CHECK-YC-I3: cc1
251// CHECK-YC-I3: -emit-obj
252// CHECK-YC-I3: -include-pch
253// CHECK-YC-I3: pchfile.pch
254
255// But /FIfoo/bar.h /Ycfoo\bar.h does work, as does /FIfOo.h /Ycfoo.H
256// RUN: %clang_cl -Werror /YupchFILE.h /FI./pchfile.h /c -### -- %s 2>&1 \
257// RUN:   | FileCheck -check-prefix=CHECK-YU-CASE %s
258// CHECK-YU-CASE: -pch-through-header=pchFILE.h
259// CHECK-YU-CASE: -include
260// CHECK-YU-CASE: "./pchfile.h"
261// RUN: %clang_cl -Werror /Yu./pchfile.h /FI.\\pchfile.h /c -### -- %s 2>&1 \
262// RUN:   | FileCheck -check-prefix=CHECK-YU-SLASH %s
263// CHECK-YU-SLASH: -pch-through-header=./pchfile.h
264// CHECK-YU-SLASH: -include
265// CHECK-YU-SLASH: ".{{[/\\]+}}pchfile.h"
266
267// /Yc without an argument creates a PCH from the code before #pragma hdrstop.
268// /Yu without an argument uses a PCH and starts compiling after the
269// #pragma hdrstop.
270// RUN: %clang_cl -Werror /Yc /Fpycnoarg.pch /c -### -- %s 2>&1 \
271// RUN:   | FileCheck -check-prefix=CHECK-YC-NOARG %s
272// 1. Create .pch file
273// CHECK-YC-NOARG: cc1
274// CHECK-YC-NOARG: -emit-pch
275// CHECK-YC-NOARG: -pch-through-hdrstop-create
276// CHECK-YC-NOARG: -o
277// CHECK-YC-NOARG: ycnoarg.pch
278// CHECK-YC-NOARG: -x
279// CHECK-YC-NOARG: "c++-header"
280// CHECK-YC-NOARG: cl-pch.cpp
281// 2. Use .pch file: Includes ycnoarg.pch
282// CHECK-YC-NOARG: cc1
283// CHECK-YC-NOARG: -emit-obj
284// CHECK-YC-NOARG: -include-pch
285// CHECK-YC-NOARG: ycnoarg.pch
286// CHECK-YC-NOARG: -pch-through-hdrstop-create
287// CHECK-YC-NOARG: -o
288// CHECK-YC-NOARG: cl-pch.obj
289// CHECK-YC-NOARG: -x
290// CHECK-YC-NOARG: "c++"
291// CHECK-YC-NOARG: cl-pch.cpp
292
293// RUN: %clang_cl -Werror /Yu /Fpycnoarg.pch /c -### -- %s 2>&1 \
294// RUN:   | FileCheck -check-prefix=CHECK-YU-NOARG %s
295// Use .pch file, but don't build it.
296// CHECK-YU-NOARG-NOT: -emit-pch
297// CHECK-YU-NOARG: cc1
298// CHECK-YU-NOARG: -emit-obj
299// CHECK-YU-NOARG: -include-pch
300// CHECK-YU-NOARG: ycnoarg.pch
301// CHECK-YU-NOARG: -pch-through-hdrstop-use
302// CHECK-YU-NOARG: -o
303// CHECK-YU-NOARG: cl-pch.obj
304// CHECK-YU-NOARG: -x
305// CHECK-YU-NOARG: "c++"
306// CHECK-YU-NOARG: cl-pch.cpp
307
308// /Yc with no argument and no /FP
309// RUN: %clang_cl -Werror /Yc /c -### -- %s 2>&1 \
310// RUN:   | FileCheck -check-prefix=CHECK-YC-NOARG-NOFP %s
311// 1. Create .pch file
312// CHECK-YC-NOARG-NOFP: cc1
313// CHECK-YC-NOARG-NOFP: -emit-pch
314// CHECK-YC-NOARG-NOFP: -pch-through-hdrstop-create
315// CHECK-YC-NOARG-NOFP: -o
316// CHECK-YC-NOARG-NOFP: cl-pch.pch
317// CHECK-YC-NOARG-NOFP: -x
318// CHECK-YC-NOARG-NOFP: "c++-header"
319// CHECK-YC-NOARG-NOFP: cl-pch.cpp
320// 2. Use .pch file: Includes cl-pch.pch
321// CHECK-YC-NOARG-NOFP: cc1
322// CHECK-YC-NOARG-NOFP: -emit-obj
323// CHECK-YC-NOARG-NOFP: -include-pch
324// CHECK-YC-NOARG-NOFP: cl-pch.pch
325// CHECK-YC-NOARG-NOFP: -pch-through-hdrstop-create
326// CHECK-YC-NOARG-NOFP: -o
327// CHECK-YC-NOARG-NOFP: cl-pch.obj
328// CHECK-YC-NOARG-NOFP: -x
329// CHECK-YC-NOARG-NOFP: "c++"
330// CHECK-YC-NOARG-NOFP: cl-pch.cpp
331
332// cl.exe warns on multiple /Yc, /Yu, /Fp arguments, but clang-cl silently just
333// uses the last one.  This is true for e.g. /Fo too, so not warning on this
334// is self-consistent with clang-cl's flag handling.
335
336// Interaction with /fallback
337
338// /Yc /fallback => /Yc not passed on (but /FI is)
339// RUN: %clang_cl -Werror /Ycpchfile.h /FIpchfile.h /Fpfoo.pch /fallback /c -### -- %s 2>&1 \
340// RUN:   | FileCheck -check-prefix=CHECK-YC-FALLBACK %s
341// Note that in /fallback builds, if creation of the pch fails the main compile
342// does still run so that /fallback can have an effect (this part is not tested)
343// CHECK-YC-FALLBACK: cc1
344// CHECK-YC-FALLBACK: -emit-obj
345// CHECK-YC-FALLBACK: -include-pch
346// CHECK-YC-FALLBACK: foo.pch
347// CHECK-YC-FALLBACK: ||
348// CHECK-YC-FALLBACK: cl.exe
349// CHECK-YC-FALLBACK-NOT: -include-pch
350// CHECK-YC-FALLBACK-NOT: /Ycpchfile.h
351// CHECK-YC-FALLBACK: /FIpchfile.h
352// CHECK-YC-FALLBACK-NOT: /Fpfoo.pch
353
354// /Yu /fallback => /Yu not passed on (but /FI is)
355// RUN: %clang_cl -Werror /Yupchfile.h /FIpchfile.h /Fpfoo.pch /fallback /c -### -- %s 2>&1 \
356// RUN:   | FileCheck -check-prefix=CHECK-YU-FALLBACK %s
357// CHECK-YU-FALLBACK-NOT: -emit-pch
358// CHECK-YU-FALLBACK: cc1
359// CHECK-YU-FALLBACK: -emit-obj
360// CHECK-YU-FALLBACK: -include-pch
361// CHECK-YU-FALLBACK: foo.pch
362// CHECK-YU-FALLBACK: ||
363// CHECK-YU-FALLBACK: cl.exe
364// CHECK-YU-FALLBACK-NOT: -include-pch
365// CHECK-YU-FALLBACK-NOT: /Yupchfile.h
366// CHECK-YU-FALLBACK: /FIpchfile.h
367// CHECK-YU-FALLBACK-NOT: /Fpfoo.pch
368
369// /FI without /Yu => pch file not used, even if it exists (different from
370// -include, which picks up .gch files if they exist).
371// RUN: touch %t.pch
372// RUN: %clang_cl -Werror /FI%t.pch /Fp%t.pch /c -### -- %s 2>&1 \
373// RUN:   | FileCheck -check-prefix=CHECK-FI %s
374// CHECK-FI-NOT: -include-pch
375// CHECK-FI: -include
376
377// Test interaction of /Yc with language mode flags.
378
379// If /TC changes the input language to C, a c pch file should be produced.
380// RUN: %clang_cl /TC -Werror /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
381// RUN:   | FileCheck -check-prefix=CHECK-YCTC %s
382// CHECK-YCTC: cc1
383// CHECK-YCTC: -emit-pch
384// CHECK-YCTC: -o
385// CHECK-YCTC: pchfile.pch
386// CHECK-YCTC: -x
387// CHECK-YCTC: "c"
388
389// Also check lower-case /Tc variant.
390// RUN: %clang_cl -Werror /Ycpchfile.h /FIpchfile.h /c -### /Tc%s 2>&1 \
391// RUN:   | FileCheck -check-prefix=CHECK-YCTc %s
392// CHECK-YCTc: cc1
393// CHECK-YCTc: -emit-pch
394// CHECK-YCTc: -o
395// CHECK-YCTc: pchfile.pch
396// CHECK-YCTc: -x
397// CHECK-YCTc: "c"
398
399// Don't crash when a non-source file is passed.
400// RUN: %clang_cl -Werror /Ycpchfile.h /FIpchfile.h /c -### -- %S/Inputs/file.prof 2>&1 \
401// RUN:   | FileCheck -check-prefix=CHECK-NoSource %s
402// CHECK-NoSource: file.prof:{{.*}}input unused
403
404// ...but if an explicit flag turns the file into a source file, handle it:
405// RUN: %clang_cl /TP -Werror /Ycpchfile.h /FIpchfile.h /c -### -- %S/Inputs/file.prof 2>&1 \
406// RUN:   | FileCheck -check-prefix=CHECK-NoSourceTP %s
407// CHECK-NoSourceTP: cc1
408// CHECK-NoSourceTP: -emit-pch
409// CHECK-NoSourceTP: -o
410// CHECK-NoSourceTP: pchfile.pch
411// CHECK-NoSourceTP: -x
412// CHECK-NoSourceTP: "c++"
413
414// If only preprocessing, PCH options are ignored.
415// RUN: %clang_cl /P /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
416// RUN:   | FileCheck -check-prefix=CHECK-YC-P %s
417// CHECK-YC-P-NOT: -emit-pch
418// CHECK-YC-P-NOT: -include-pch
419
420// RUN: %clang_cl /E /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
421// RUN:   | FileCheck -check-prefix=CHECK-YC-E %s
422// CHECK-YC-E-NOT: -emit-pch
423// CHECK-YC-E-NOT: -include-pch
424
425// RUN: %clang_cl /P /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
426// RUN:   | FileCheck -check-prefix=CHECK-YU-P %s
427// CHECK-YU-P-NOT: -emit-pch
428// CHECK-YU-P-NOT: -include-pch
429
430// RUN: %clang_cl /E /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
431// RUN:   | FileCheck -check-prefix=CHECK-YU-E %s
432// CHECK-YU-E-NOT: -emit-pch
433// CHECK-YU-E-NOT: -include-pch
434