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