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