Home | History | Annotate | Download | only in Driver
      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 /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: "-garbage"
     37 // CHECK: "-moregarbage"
     38 // CHECK: "/Tc" "{{.*cl-fallback.c}}"
     39 // CHECK: "/Fo{{.*cl-fallback.*.obj}}"
     40 
     41 // RUN: %clang_cl /fallback /GR- -### -- %s 2>&1 | FileCheck -check-prefix=GR %s
     42 // GR: cl.exe
     43 // GR: "/GR-"
     44 
     45 // RUN: %clang_cl /fallback /GS- -### -- %s 2>&1 | FileCheck -check-prefix=GS %s
     46 // GS: cl.exe
     47 // GS: "/GS-"
     48 
     49 // RUN: %clang_cl /fallback /Od -### -- %s 2>&1 | FileCheck -check-prefix=O0 %s
     50 // O0: cl.exe
     51 // O0: "/Od"
     52 // RUN: %clang_cl --target=i686-pc-win32 /fallback /O1 -### -- %s 2>&1 | FileCheck -check-prefix=O1 %s
     53 // O1: cl.exe
     54 // O1: "/Og" "/Os" "/Ob2" "/Oy" "/GF" "/Gy"
     55 // RUN: %clang_cl --target=i686-pc-win32 /fallback /O2 -### -- %s 2>&1 | FileCheck -check-prefix=O2 %s
     56 // O2: cl.exe
     57 // O2: "/Oi" "/Og" "/Ot" "/Ob2" "/Oy" "/GF" "/Gy"
     58 // RUN: %clang_cl --target=i686-pc-win32 /fallback /Os -### -- %s 2>&1 | FileCheck -check-prefix=Os %s
     59 // Os: cl.exe
     60 // Os: "/Os"
     61 // RUN: %clang_cl --target=i686-pc-win32 /fallback /Ox -### -- %s 2>&1 | FileCheck -check-prefix=Ox %s
     62 // Ox: cl.exe
     63 // Ox: "/Oi" "/Og" "/Ot" "/Ob2" "/Oy" "/GF"
     64 
     65 // Only fall back when actually compiling, not for e.g. /P (preprocess).
     66 // RUN: %clang_cl /fallback /P -### -- %s 2>&1 | FileCheck -check-prefix=P %s
     67 // P-NOT: ||
     68 // P-NOT: "cl.exe"
     69 
     70 // RUN: not %clang_cl /fallback /c -- %s 2>&1 | \
     71 // RUN:     FileCheck -check-prefix=ErrWarn %s
     72 // ErrWarn: warning: falling back to {{.*}}cl.exe
     73 
     74 // RUN: %clang_cl /fallback /c /GR /GR- -### -- %s 2>&1 | \
     75 // RUN:     FileCheck -check-prefix=NO_RTTI %s
     76 // NO_RTTI: "-cc1"
     77 // NO_RTTI: ||
     78 // NO_RTTI: cl.exe
     79 // NO_RTTI: "/GR-"
     80 
     81 // Don't fall back on non-C or C++ files.
     82 // RUN: %clang_cl /fallback -### -- %S/Inputs/file.ll 2>&1 | FileCheck -check-prefix=LL %s
     83 // LL: file.ll
     84 // LL-NOT: ||
     85 // LL-NOT: "cl.exe"
     86 
     87 
     88 #error "This fails to compile."
     89