xref: /aosp_15_r20/external/clang/test/Driver/cl-fallback.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // Note: %s must be preceded by --, otherwise it may be interpreted as a
2*67e74705SXin Li // command-line option, e.g. on Mac where %s is commonly under /Users.
3*67e74705SXin Li 
4*67e74705SXin Li // RUN: %clang_cl --target=i686-pc-win32 /fallback /Dfoo=bar /Ubaz /Ifoo /O0 /Ox /GR /GR- /GS /GS- /Gy /Gy- \
5*67e74705SXin Li // RUN:   /Gw /Gw- /LD /LDd /EHs /EHs- /Zl /MD /MDd /MTd /MT /FImyheader.h /Zi \
6*67e74705SXin Li // RUN:   -garbage -moregarbage \
7*67e74705SXin Li // RUN:   -### -- %s 2>&1 \
8*67e74705SXin Li // RUN:   | FileCheck %s
9*67e74705SXin Li // CHECK: "-fdiagnostics-format" "msvc-fallback"
10*67e74705SXin Li // CHECK: ||
11*67e74705SXin Li // CHECK: cl.exe
12*67e74705SXin Li // CHECK: "/nologo"
13*67e74705SXin Li // CHECK: "/c"
14*67e74705SXin Li // CHECK: "/W0"
15*67e74705SXin Li // CHECK: "-D" "foo=bar"
16*67e74705SXin Li // CHECK: "-U" "baz"
17*67e74705SXin Li // CHECK: "-I" "foo"
18*67e74705SXin Li // CHECK: "/Oi"
19*67e74705SXin Li // CHECK: "/Og"
20*67e74705SXin Li // CHECK: "/Ot"
21*67e74705SXin Li // CHECK: "/Ob2"
22*67e74705SXin Li // CHECK: "/Oy"
23*67e74705SXin Li // CHECK: "/GF"
24*67e74705SXin Li // CHECK: "/GR-"
25*67e74705SXin Li // CHECK: "/GS-"
26*67e74705SXin Li // CHECK: "/Gy-"
27*67e74705SXin Li // CHECK: "/Gw-"
28*67e74705SXin Li // CHECK: "/Z7"
29*67e74705SXin Li // CHECK: "/FImyheader.h"
30*67e74705SXin Li // CHECK: "/LD"
31*67e74705SXin Li // CHECK: "/LDd"
32*67e74705SXin Li // CHECK: "/EHs"
33*67e74705SXin Li // CHECK: "/EHs-"
34*67e74705SXin Li // CHECK: "/Zl"
35*67e74705SXin Li // CHECK: "/MT"
36*67e74705SXin Li // CHECK: "-garbage"
37*67e74705SXin Li // CHECK: "-moregarbage"
38*67e74705SXin Li // CHECK: "/Tc" "{{.*cl-fallback.c}}"
39*67e74705SXin Li // CHECK: "/Fo{{.*cl-fallback.*.obj}}"
40*67e74705SXin Li 
41*67e74705SXin Li // RUN: %clang_cl /fallback /GR- -### -- %s 2>&1 | FileCheck -check-prefix=GR %s
42*67e74705SXin Li // GR: cl.exe
43*67e74705SXin Li // GR: "/GR-"
44*67e74705SXin Li 
45*67e74705SXin Li // RUN: %clang_cl /fallback /GS- -### -- %s 2>&1 | FileCheck -check-prefix=GS %s
46*67e74705SXin Li // GS: cl.exe
47*67e74705SXin Li // GS: "/GS-"
48*67e74705SXin Li 
49*67e74705SXin Li // RUN: %clang_cl /fallback /Od -### -- %s 2>&1 | FileCheck -check-prefix=O0 %s
50*67e74705SXin Li // O0: cl.exe
51*67e74705SXin Li // O0: "/Od"
52*67e74705SXin Li // RUN: %clang_cl --target=i686-pc-win32 /fallback /O1 -### -- %s 2>&1 | FileCheck -check-prefix=O1 %s
53*67e74705SXin Li // O1: cl.exe
54*67e74705SXin Li // O1: "/Og" "/Os" "/Ob2" "/Oy" "/GF" "/Gy"
55*67e74705SXin Li // RUN: %clang_cl --target=i686-pc-win32 /fallback /O2 -### -- %s 2>&1 | FileCheck -check-prefix=O2 %s
56*67e74705SXin Li // O2: cl.exe
57*67e74705SXin Li // O2: "/Oi" "/Og" "/Ot" "/Ob2" "/Oy" "/GF" "/Gy"
58*67e74705SXin Li // RUN: %clang_cl --target=i686-pc-win32 /fallback /Os -### -- %s 2>&1 | FileCheck -check-prefix=Os %s
59*67e74705SXin Li // Os: cl.exe
60*67e74705SXin Li // Os: "/Os"
61*67e74705SXin Li // RUN: %clang_cl --target=i686-pc-win32 /fallback /Ox -### -- %s 2>&1 | FileCheck -check-prefix=Ox %s
62*67e74705SXin Li // Ox: cl.exe
63*67e74705SXin Li // Ox: "/Oi" "/Og" "/Ot" "/Ob2" "/Oy" "/GF"
64*67e74705SXin Li 
65*67e74705SXin Li // Only fall back when actually compiling, not for e.g. /P (preprocess).
66*67e74705SXin Li // RUN: %clang_cl /fallback /P -### -- %s 2>&1 | FileCheck -check-prefix=P %s
67*67e74705SXin Li // P-NOT: ||
68*67e74705SXin Li // P-NOT: "cl.exe"
69*67e74705SXin Li 
70*67e74705SXin Li // RUN: not %clang_cl /fallback /c -- %s 2>&1 | \
71*67e74705SXin Li // RUN:     FileCheck -check-prefix=ErrWarn %s
72*67e74705SXin Li // ErrWarn: warning: falling back to {{.*}}cl.exe
73*67e74705SXin Li 
74*67e74705SXin Li // RUN: %clang_cl /fallback /c /GR /GR- -### -- %s 2>&1 | \
75*67e74705SXin Li // RUN:     FileCheck -check-prefix=NO_RTTI %s
76*67e74705SXin Li // NO_RTTI: "-cc1"
77*67e74705SXin Li // NO_RTTI: ||
78*67e74705SXin Li // NO_RTTI: cl.exe
79*67e74705SXin Li // NO_RTTI: "/GR-"
80*67e74705SXin Li 
81*67e74705SXin Li // Don't fall back on non-C or C++ files.
82*67e74705SXin Li // RUN: %clang_cl /fallback -### -- %S/Inputs/file.ll 2>&1 | FileCheck -check-prefix=LL %s
83*67e74705SXin Li // LL: file.ll
84*67e74705SXin Li // LL-NOT: ||
85*67e74705SXin Li // LL-NOT: "cl.exe"
86*67e74705SXin Li 
87*67e74705SXin Li 
88*67e74705SXin Li #error "This fails to compile."
89