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