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