1c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// Don't attempt slash switches on msys bash.
2c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// REQUIRES: shell-preserves-root
3c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg
4c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// Note: %s must be preceded by --, otherwise it may be interpreted as a
5c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// command-line option, e.g. on Mac where %s is commonly under /Users.
6c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg
7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cl /fallback /Dfoo=bar /Ubaz /Ifoo /O0 /Ox /GR /GR- /Gy /Gy- \
8ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// RUN:   /Gw /Gw- /LD /LDd /EHs /EHs- /MD /MDd /MTd /MT /FImyheader.h /Zi \
96bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN:   -### -- %s 2>&1 \
10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN:   | FileCheck %s
1189e32745123c02159fa1d1f19f96bdd4173029f0Hans Wennborg// CHECK: "-fdiagnostics-format" "msvc-fallback"
12c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// CHECK: ||
13c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// CHECK: cl.exe
141413d629953d24647afaea7f0e0d16078d95ab7cHans Wennborg// CHECK: "/nologo"
15c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// CHECK: "/c"
16c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// CHECK: "/W0"
17c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// CHECK: "-D" "foo=bar"
18c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// CHECK: "-U" "baz"
19c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// CHECK: "-I" "foo"
20a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// CHECK: "/Ox"
21c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// CHECK: "/GR-"
22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: "/Gy-"
236bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK: "/Gw-"
24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: "/Z7"
254fe475a1a1d333d4ddeca386fa8dae3448103c3aHans Wennborg// CHECK: "/FImyheader.h"
26c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// CHECK: "/LD"
27c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// CHECK: "/LDd"
28ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// CHECK: "/EHs"
29ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// CHECK: "/EHs-"
30c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// CHECK: "/MT"
31c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// CHECK: "/Tc" "{{.*cl-fallback.c}}"
32c8ba0a0acd30f0b56d08a3a0947f68ac01a40730Hans Wennborg// CHECK: "/Fo{{.*cl-fallback.*.obj}}"
33a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg
34ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// RUN: %clang_cl /fallback /GR- -### -- %s 2>&1 | FileCheck -check-prefix=GR %s
35ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// GR: cl.exe
36ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// GR: "/GR-"
37ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
38a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// RUN: %clang_cl /fallback /Od -### -- %s 2>&1 | FileCheck -check-prefix=O0 %s
39a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// O0: cl.exe
40a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// O0: "/Od"
41a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// RUN: %clang_cl /fallback /O1 -### -- %s 2>&1 | FileCheck -check-prefix=O1 %s
42a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// O1: cl.exe
43a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// O1: "-O1"
44a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// RUN: %clang_cl /fallback /O2 -### -- %s 2>&1 | FileCheck -check-prefix=O2 %s
45a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// O2: cl.exe
46a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// O2: "-O2"
47a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// RUN: %clang_cl /fallback /Os -### -- %s 2>&1 | FileCheck -check-prefix=Os %s
48a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// Os: cl.exe
49a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// Os: "-Os"
50a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// RUN: %clang_cl /fallback /Ox -### -- %s 2>&1 | FileCheck -check-prefix=Ox %s
51a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// Ox: cl.exe
52a8ffc16dc1c5b21c3fdb2b53a9c0eb5af5d3babbHans Wennborg// Ox: "/Ox"
53651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
54651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// Only fall back when actually compiling, not for e.g. /P (preprocess).
55651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cl /fallback /P -### -- %s 2>&1 | FileCheck -check-prefix=P %s
56651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// P-NOT: ||
57651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// P-NOT: "cl.exe"
58651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
59651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: not %clang_cl /fallback /c -- %s 2>&1 | \
60651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN:     FileCheck -check-prefix=ErrWarn %s
61651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// ErrWarn: warning: falling back to {{.*}}cl.exe
62651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
636bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cl /fallback /c /GR /GR- -### -- %s 2>&1 | \
646bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN:     FileCheck -check-prefix=NO_RTTI %s
656bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// NO_RTTI: "-cc1"
666bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// NO_RTTI: ||
676bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// NO_RTTI: cl.exe
68ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// NO_RTTI: "/GR-"
696bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
706bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// Don't fall back on non-C or C++ files.
716bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cl /fallback -### -- %S/Inputs/file.ll 2>&1 | FileCheck -check-prefix=LL %s
726bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// LL: file.ll
736bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// LL-NOT: ||
746bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// LL-NOT: "cl.exe"
756bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
766bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
77651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#error "This fails to compile."
78