xref: /aosp_15_r20/external/clang/test/Driver/clang_f_opts.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // REQUIRES: clang-driver
2*67e74705SXin Li 
3*67e74705SXin Li // RUN: %clang -### -S -fasm -fblocks -fbuiltin -fno-math-errno -fcommon -fpascal-strings -fno-blocks -fno-builtin -fmath-errno -fno-common -fno-pascal-strings -fblocks -fbuiltin -fmath-errno -fcommon -fpascal-strings -fsplit-stack %s 2>&1 | FileCheck -check-prefix=CHECK-OPTIONS1 %s
4*67e74705SXin Li // RUN: %clang -### -S -fasm -fblocks -fbuiltin -fno-math-errno -fcommon -fpascal-strings -fno-asm -fno-blocks -fno-builtin -fmath-errno -fno-common -fno-pascal-strings -fno-show-source-location -fshort-enums -fshort-wchar %s 2>&1 | FileCheck -check-prefix=CHECK-OPTIONS2 %s
5*67e74705SXin Li 
6*67e74705SXin Li // CHECK-OPTIONS1: -split-stacks
7*67e74705SXin Li // CHECK-OPTIONS1: -fgnu-keywords
8*67e74705SXin Li // CHECK-OPTIONS1: -fblocks
9*67e74705SXin Li // CHECK-OPTIONS1: -fpascal-strings
10*67e74705SXin Li 
11*67e74705SXin Li // CHECK-OPTIONS2: -fmath-errno
12*67e74705SXin Li // CHECK-OPTIONS2: -fno-gnu-keywords
13*67e74705SXin Li // CHECK-OPTIONS2: -fno-builtin
14*67e74705SXin Li // CHECK-OPTIONS2: -fshort-enums
15*67e74705SXin Li // CHECK-OPTIONS2: -fshort-wchar
16*67e74705SXin Li // CHECK-OPTIONS2: -fno-common
17*67e74705SXin Li // CHECK-OPTIONS2: -fno-show-source-location
18*67e74705SXin Li 
19*67e74705SXin Li // RUN: %clang -### -S -Wwrite-strings %s 2>&1 | FileCheck -check-prefix=WRITE-STRINGS1 %s
20*67e74705SXin Li // WRITE-STRINGS1: -fconst-strings
21*67e74705SXin Li // RUN: %clang -### -S -Wwrite-strings -Wno-write-strings %s 2>&1 | FileCheck -check-prefix=WRITE-STRINGS2 %s
22*67e74705SXin Li // WRITE-STRINGS2-NOT: -fconst-strings
23*67e74705SXin Li // RUN: %clang -### -S -Wwrite-strings -w %s 2>&1 | FileCheck -check-prefix=WRITE-STRINGS3 %s
24*67e74705SXin Li // WRITE-STRINGS3-NOT: -fconst-strings
25*67e74705SXin Li 
26*67e74705SXin Li // RUN: %clang -### -x c++ -c %s 2>&1 | FileCheck -check-prefix=DEPRECATED-ON-CHECK %s
27*67e74705SXin Li // RUN: %clang -### -x c++ -c -Wdeprecated %s 2>&1 | FileCheck -check-prefix=DEPRECATED-ON-CHECK %s
28*67e74705SXin Li // RUN: %clang -### -x c++ -c -Wno-deprecated %s 2>&1 | FileCheck -check-prefix=DEPRECATED-OFF-CHECK %s
29*67e74705SXin Li // RUN: %clang -### -x c++ -c -Wno-deprecated -Wdeprecated %s 2>&1 | FileCheck -check-prefix=DEPRECATED-ON-CHECK %s
30*67e74705SXin Li // RUN: %clang -### -x c++ -c -w %s 2>&1 | FileCheck -check-prefix=DEPRECATED-ON-CHECK %s
31*67e74705SXin Li // RUN: %clang -### -c %s 2>&1 | FileCheck -check-prefix=DEPRECATED-OFF-CHECK %s
32*67e74705SXin Li // RUN: %clang -### -c -Wdeprecated %s 2>&1 | FileCheck -check-prefix=DEPRECATED-OFF-CHECK %s
33*67e74705SXin Li // DEPRECATED-ON-CHECK: -fdeprecated-macro
34*67e74705SXin Li // DEPRECATED-OFF-CHECK-NOT: -fdeprecated-macro
35*67e74705SXin Li 
36*67e74705SXin Li // RUN: %clang -### -S -ffp-contract=fast %s 2>&1 | FileCheck -check-prefix=FP-CONTRACT-FAST-CHECK %s
37*67e74705SXin Li // RUN: %clang -### -S -ffast-math %s 2>&1 | FileCheck -check-prefix=FP-CONTRACT-FAST-CHECK %s
38*67e74705SXin Li // RUN: %clang -### -S -ffp-contract=off %s 2>&1 | FileCheck -check-prefix=FP-CONTRACT-OFF-CHECK %s
39*67e74705SXin Li // FP-CONTRACT-FAST-CHECK: -ffp-contract=fast
40*67e74705SXin Li // FP-CONTRACT-OFF-CHECK: -ffp-contract=off
41*67e74705SXin Li 
42*67e74705SXin Li // RUN: %clang -### -S -funroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-UNROLL-LOOPS %s
43*67e74705SXin Li // RUN: %clang -### -S -fno-unroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-NO-UNROLL-LOOPS %s
44*67e74705SXin Li // RUN: %clang -### -S -fno-unroll-loops -funroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-UNROLL-LOOPS %s
45*67e74705SXin Li // RUN: %clang -### -S -funroll-loops -fno-unroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-NO-UNROLL-LOOPS %s
46*67e74705SXin Li // CHECK-UNROLL-LOOPS: "-funroll-loops"
47*67e74705SXin Li // CHECK-NO-UNROLL-LOOPS: "-fno-unroll-loops"
48*67e74705SXin Li 
49*67e74705SXin Li // RUN: %clang -### -S -freroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-REROLL-LOOPS %s
50*67e74705SXin Li // RUN: %clang -### -S -fno-reroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-NO-REROLL-LOOPS %s
51*67e74705SXin Li // RUN: %clang -### -S -fno-reroll-loops -freroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-REROLL-LOOPS %s
52*67e74705SXin Li // RUN: %clang -### -S -freroll-loops -fno-reroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-NO-REROLL-LOOPS %s
53*67e74705SXin Li // CHECK-REROLL-LOOPS: "-freroll-loops"
54*67e74705SXin Li // CHECK-NO-REROLL-LOOPS-NOT: "-freroll-loops"
55*67e74705SXin Li 
56*67e74705SXin Li // RUN: %clang -### -S -fprofile-sample-use=%S/Inputs/file.prof %s 2>&1 | FileCheck -check-prefix=CHECK-SAMPLE-PROFILE %s
57*67e74705SXin Li // CHECK-SAMPLE-PROFILE: "-fprofile-sample-use={{.*}}/file.prof"
58*67e74705SXin Li 
59*67e74705SXin Li // RUN: %clang -### -S -fauto-profile=%S/Inputs/file.prof %s 2>&1 | FileCheck -check-prefix=CHECK-AUTO-PROFILE %s
60*67e74705SXin Li // CHECK-AUTO-PROFILE: "-fprofile-sample-use={{.*}}/file.prof"
61*67e74705SXin Li 
62*67e74705SXin Li // RUN: %clang -### -S -fprofile-arcs %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-ARCS %s
63*67e74705SXin Li // RUN: %clang -### -S -fno-profile-arcs -fprofile-arcs %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-ARCS %s
64*67e74705SXin Li // RUN: %clang -### -S -fno-profile-arcs %s 2>&1 | FileCheck -check-prefix=CHECK-NO-PROFILE-ARCS %s
65*67e74705SXin Li // RUN: %clang -### -S -fprofile-arcs -fno-profile-arcs %s 2>&1 | FileCheck -check-prefix=CHECK-NO-PROFILE-ARCS %s
66*67e74705SXin Li // CHECK-PROFILE-ARCS: "-femit-coverage-data"
67*67e74705SXin Li // CHECK-NO-PROFILE-ARCS-NOT: "-femit-coverage-data"
68*67e74705SXin Li 
69*67e74705SXin Li // RUN: %clang -### -S -fprofile-generate %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-GENERATE %s
70*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-generate %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-GENERATE %s
71*67e74705SXin Li // RUN: %clang -### -S -fprofile-generate=/some/dir %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-GENERATE-DIR %s
72*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-generate=/tmp/somefile.profraw %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-GENERATE-FILE %s
73*67e74705SXin Li // RUN: %clang -### -S -fprofile-generate -fprofile-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
74*67e74705SXin Li // RUN: %clang -### -S -fprofile-generate -fprofile-use=dir %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
75*67e74705SXin Li // RUN: %clang -### -S -fprofile-generate -fprofile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
76*67e74705SXin Li // RUN: %clang -### -S -fprofile-generate -fprofile-instr-use=file %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
77*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-generate -fprofile-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
78*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-generate -fprofile-use=dir %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
79*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-generate -fprofile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
80*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-generate -fprofile-instr-use=file %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
81*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-generate=file -fprofile-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
82*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-generate=file -fprofile-use=dir %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
83*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-generate=file -fprofile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
84*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-generate=file -fprofile-instr-use=file %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
85*67e74705SXin Li // RUN: %clang -### -S -fprofile-generate=dir -fprofile-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
86*67e74705SXin Li // RUN: %clang -### -S -fprofile-generate=dir -fprofile-use=dir %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
87*67e74705SXin Li // RUN: %clang -### -S -fprofile-generate=dir -fprofile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
88*67e74705SXin Li // RUN: %clang -### -S -fprofile-generate=dir -fprofile-instr-use=file %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
89*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-generate=file -fno-profile-instr-generate %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-GEN %s
90*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-generate=file -fno-profile-generate %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-GEN %s
91*67e74705SXin Li // RUN: %clang -### -S -fprofile-generate=dir -fno-profile-generate %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-GEN %s
92*67e74705SXin Li // RUN: %clang -### -S -fprofile-generate=dir -fno-profile-instr-generate %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-GEN %s
93*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-use=file -fno-profile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-USE %s
94*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-use=file -fno-profile-use %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-USE %s
95*67e74705SXin Li // RUN: %clang -### -S -fprofile-use=file -fno-profile-use %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-USE %s
96*67e74705SXin Li // RUN: %clang -### -S -fprofile-use=file -fno-profile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-USE %s
97*67e74705SXin Li // RUN: %clang -### -S -fcoverage-mapping %s 2>&1 | FileCheck -check-prefix=CHECK-COVERAGE-AND-GEN %s
98*67e74705SXin Li // RUN: %clang -### -S -fcoverage-mapping -fno-coverage-mapping %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-COVERAGE %s
99*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-generate -fcoverage-mapping -fno-coverage-mapping %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-COVERAGE %s
100*67e74705SXin Li // CHECK-PROFILE-GENERATE: "-fprofile-instrument=clang"
101*67e74705SXin Li // CHECK-PROFILE-GENERATE-DIR: "-fprofile-instrument-path=/some/dir{{/|\\\\}}default.profraw"
102*67e74705SXin Li // CHECK-PROFILE-GENERATE-FILE: "-fprofile-instrument-path=/tmp/somefile.profraw"
103*67e74705SXin Li // CHECK-NO-MIX-GEN-USE: '{{[a-z=-]*}}' not allowed with '{{[a-z=-]*}}'
104*67e74705SXin Li // CHECK-DISABLE-GEN-NOT: "-fprofile-instrument=clang"
105*67e74705SXin Li // CHECK-DISABLE-USE-NOT: "-fprofile-instr-use"
106*67e74705SXin Li // CHECK-COVERAGE-AND-GEN: '-fcoverage-mapping' only allowed with '-fprofile-instr-generate'
107*67e74705SXin Li // CHECK-DISABLE-COVERAGE-NOT: "-fcoverage-mapping"
108*67e74705SXin Li 
109*67e74705SXin Li // RUN: %clang -### -S -fprofile-use %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-USE %s
110*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-USE %s
111*67e74705SXin Li // RUN: mkdir -p %t.d/some/dir
112*67e74705SXin Li // RUN: %clang -### -S -fprofile-use=%t.d/some/dir %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-USE-DIR %s
113*67e74705SXin Li // RUN: %clang -### -S -fprofile-instr-use=/tmp/somefile.prof %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-USE-FILE %s
114*67e74705SXin Li // CHECK-PROFILE-USE: "-fprofile-instrument-use-path=default.profdata"
115*67e74705SXin Li // CHECK-PROFILE-USE-DIR: "-fprofile-instrument-use-path={{.*}}.d/some/dir{{/|\\\\}}default.profdata"
116*67e74705SXin Li // CHECK-PROFILE-USE-FILE: "-fprofile-instrument-use-path=/tmp/somefile.prof"
117*67e74705SXin Li 
118*67e74705SXin Li // RUN: %clang -### -S -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
119*67e74705SXin Li // RUN: %clang -### -S -fno-vectorize -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
120*67e74705SXin Li // RUN: %clang -### -S -fno-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
121*67e74705SXin Li // RUN: %clang -### -S -fvectorize -fno-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
122*67e74705SXin Li // RUN: %clang -### -S -ftree-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
123*67e74705SXin Li // RUN: %clang -### -S -fno-tree-vectorize -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
124*67e74705SXin Li // RUN: %clang -### -S -fno-tree-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
125*67e74705SXin Li // RUN: %clang -### -S -ftree-vectorize -fno-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
126*67e74705SXin Li // RUN: %clang -### -S -O %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
127*67e74705SXin Li // RUN: %clang -### -S -O2 %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
128*67e74705SXin Li // RUN: %clang -### -S -Os %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
129*67e74705SXin Li // RUN: %clang -### -S -O3 %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
130*67e74705SXin Li // RUN: %clang -### -S -fno-vectorize -O3 %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
131*67e74705SXin Li // RUN: %clang -### -S -O1 -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
132*67e74705SXin Li // RUN: %clang -### -S -Ofast %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
133*67e74705SXin Li // RUN: %clang -### -S %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
134*67e74705SXin Li // RUN: %clang -### -S -O0 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
135*67e74705SXin Li // RUN: %clang -### -S -O1 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
136*67e74705SXin Li // RUN: %clang -### -S -Oz %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
137*67e74705SXin Li // CHECK-VECTORIZE: "-vectorize-loops"
138*67e74705SXin Li // CHECK-NO-VECTORIZE-NOT: "-vectorize-loops"
139*67e74705SXin Li 
140*67e74705SXin Li // RUN: %clang -### -S -fslp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
141*67e74705SXin Li // RUN: %clang -### -S -fno-slp-vectorize -fslp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
142*67e74705SXin Li // RUN: %clang -### -S -fno-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
143*67e74705SXin Li // RUN: %clang -### -S -fslp-vectorize -fno-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
144*67e74705SXin Li // RUN: %clang -### -S -ftree-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
145*67e74705SXin Li // RUN: %clang -### -S -fno-tree-slp-vectorize -fslp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
146*67e74705SXin Li // RUN: %clang -### -S -fno-tree-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
147*67e74705SXin Li // RUN: %clang -### -S -ftree-slp-vectorize -fno-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
148*67e74705SXin Li // RUN: %clang -### -S -O %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
149*67e74705SXin Li // RUN: %clang -### -S -O2 %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
150*67e74705SXin Li // RUN: %clang -### -S -Os %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
151*67e74705SXin Li // RUN: %clang -### -S -Oz %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
152*67e74705SXin Li // RUN: %clang -### -S -O3 %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
153*67e74705SXin Li // RUN: %clang -### -S -fno-slp-vectorize -O3 %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
154*67e74705SXin Li // RUN: %clang -### -S -O1 -fslp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
155*67e74705SXin Li // RUN: %clang -### -S -Ofast %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
156*67e74705SXin Li // RUN: %clang -### -S %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
157*67e74705SXin Li // RUN: %clang -### -S -O0 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
158*67e74705SXin Li // RUN: %clang -### -S -O1 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
159*67e74705SXin Li // CHECK-SLP-VECTORIZE: "-vectorize-slp"
160*67e74705SXin Li // CHECK-NO-SLP-VECTORIZE-NOT: "-vectorize-slp"
161*67e74705SXin Li 
162*67e74705SXin Li // RUN: %clang -### -S -fslp-vectorize-aggressive %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE-AGG %s
163*67e74705SXin Li // RUN: %clang -### -S -fno-slp-vectorize-aggressive -fslp-vectorize-aggressive %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE-AGG %s
164*67e74705SXin Li // RUN: %clang -### -S -fno-slp-vectorize-aggressive %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE-AGG %s
165*67e74705SXin Li // RUN: %clang -### -S -fslp-vectorize-aggressive -fno-slp-vectorize-aggressive %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE-AGG %s
166*67e74705SXin Li // CHECK-SLP-VECTORIZE-AGG: "-vectorize-slp-aggressive"
167*67e74705SXin Li // CHECK-NO-SLP-VECTORIZE-AGG-NOT: "-vectorize-slp-aggressive"
168*67e74705SXin Li 
169*67e74705SXin Li // RUN: %clang -### -S -fextended-identifiers %s 2>&1 | FileCheck -check-prefix=CHECK-EXTENDED-IDENTIFIERS %s
170*67e74705SXin Li // RUN: %clang -### -S -fno-extended-identifiers %s 2>&1 | FileCheck -check-prefix=CHECK-NO-EXTENDED-IDENTIFIERS %s
171*67e74705SXin Li // CHECK-EXTENDED-IDENTIFIERS: "-cc1"
172*67e74705SXin Li // CHECK-EXTENDED-IDENTIFIERS-NOT: "-fextended-identifiers"
173*67e74705SXin Li // CHECK-NO-EXTENDED-IDENTIFIERS: error: unsupported option '-fno-extended-identifiers'
174*67e74705SXin Li 
175*67e74705SXin Li // RUN: %clang -### -S -fno-pascal-strings -mpascal-strings %s 2>&1 | FileCheck -check-prefix=CHECK-M-PASCAL-STRINGS %s
176*67e74705SXin Li // CHECK-M-PASCAL-STRINGS: "-fpascal-strings"
177*67e74705SXin Li 
178*67e74705SXin Li // RUN: %clang -### -S -fpascal-strings -mno-pascal-strings %s 2>&1 | FileCheck -check-prefix=CHECK-NO-M-PASCAL-STRINGS %s
179*67e74705SXin Li // CHECK-NO-M-PASCAL-STRINGS-NOT: "-fpascal-strings"
180*67e74705SXin Li 
181*67e74705SXin Li // RUN: %clang -### -S -O4 %s 2>&1 | FileCheck -check-prefix=CHECK-MAX-O %s
182*67e74705SXin Li // CHECK-MAX-O: warning: -O4 is equivalent to -O3
183*67e74705SXin Li // CHECK-MAX-O: -O3
184*67e74705SXin Li 
185*67e74705SXin Li // RUN: %clang -S -O20 -o /dev/null %s 2>&1 | FileCheck -check-prefix=CHECK-INVALID-O %s
186*67e74705SXin Li // CHECK-INVALID-O: warning: optimization level '-O20' is not supported; using '-O3' instead
187*67e74705SXin Li 
188*67e74705SXin Li // RUN: %clang -### -S -finput-charset=iso-8859-1 -o /dev/null %s 2>&1 | FileCheck -check-prefix=CHECK-INVALID-CHARSET %s
189*67e74705SXin Li // CHECK-INVALID-CHARSET: error: invalid value 'iso-8859-1' in '-finput-charset=iso-8859-1'
190*67e74705SXin Li 
191*67e74705SXin Li // RUN: %clang -### -S -fexec-charset=iso-8859-1 -o /dev/null %s 2>&1 | FileCheck -check-prefix=CHECK-INVALID-INPUT-CHARSET %s
192*67e74705SXin Li // CHECK-INVALID-INPUT-CHARSET: error: invalid value 'iso-8859-1' in '-fexec-charset=iso-8859-1'
193*67e74705SXin Li 
194*67e74705SXin Li // Test that we don't error on these.
195*67e74705SXin Li // RUN: %clang -### -S -Werror                                                \
196*67e74705SXin Li // RUN:     -falign-functions -falign-functions=2 -fno-align-functions        \
197*67e74705SXin Li // RUN:     -fasynchronous-unwind-tables -fno-asynchronous-unwind-tables      \
198*67e74705SXin Li // RUN:     -fbuiltin -fno-builtin                                            \
199*67e74705SXin Li // RUN:     -fdiagnostics-show-location=once                                  \
200*67e74705SXin Li // RUN:     -ffloat-store -fno-float-store                                    \
201*67e74705SXin Li // RUN:     -feliminate-unused-debug-types -fno-eliminate-unused-debug-types  \
202*67e74705SXin Li // RUN:     -fgcse -fno-gcse                                                  \
203*67e74705SXin Li // RUN:     -fident -fno-ident                                                \
204*67e74705SXin Li // RUN:     -fimplicit-templates -fno-implicit-templates                      \
205*67e74705SXin Li // RUN:     -finput-charset=UTF-8                                             \
206*67e74705SXin Li // RUN:     -fexec-charset=UTF-8                                             \
207*67e74705SXin Li // RUN:     -fivopts -fno-ivopts                                              \
208*67e74705SXin Li // RUN:     -fnon-call-exceptions -fno-non-call-exceptions                    \
209*67e74705SXin Li // RUN:     -fpermissive -fno-permissive                                      \
210*67e74705SXin Li // RUN:     -fdefer-pop -fno-defer-pop                                        \
211*67e74705SXin Li // RUN:     -fprefetch-loop-arrays -fno-prefetch-loop-arrays                  \
212*67e74705SXin Li // RUN:     -fprofile-correction -fno-profile-correction                      \
213*67e74705SXin Li // RUN:     -fprofile-dir=bar                                                 \
214*67e74705SXin Li // RUN:     -fprofile-values -fno-profile-values                              \
215*67e74705SXin Li // RUN:     -frounding-math -fno-rounding-math                                \
216*67e74705SXin Li // RUN:     -fsee -fno-see                                                    \
217*67e74705SXin Li // RUN:     -ftracer -fno-tracer                                              \
218*67e74705SXin Li // RUN:     -funroll-all-loops -fno-unroll-all-loops                          \
219*67e74705SXin Li // RUN:     -fuse-ld=gold                                                     \
220*67e74705SXin Li // RUN:     -fno-builtin-foobar                                               \
221*67e74705SXin Li // RUN:     -fno-builtin-strcat -fno-builtin-strcpy                           \
222*67e74705SXin Li // RUN:     -fno-var-tracking                                                 \
223*67e74705SXin Li // RUN:     -fno-unsigned-char                                                \
224*67e74705SXin Li // RUN:     -fno-signed-char                                                  \
225*67e74705SXin Li // RUN:     -fstrength-reduce -fno-strength-reduce                            \
226*67e74705SXin Li // RUN:     -finline-limit=1000                                               \
227*67e74705SXin Li // RUN:     -finline-limit                                                    \
228*67e74705SXin Li // RUN:     -flto=1                                                           \
229*67e74705SXin Li // RUN:     -falign-labels                                                    \
230*67e74705SXin Li // RUN:     -falign-labels=100                                                \
231*67e74705SXin Li // RUN:     -falign-loops                                                     \
232*67e74705SXin Li // RUN:     -falign-loops=100                                                 \
233*67e74705SXin Li // RUN:     -falign-jumps                                                     \
234*67e74705SXin Li // RUN:     -falign-jumps=100                                                 \
235*67e74705SXin Li // RUN:     -fexcess-precision=100                                            \
236*67e74705SXin Li // RUN:     -fbranch-count-reg                                                \
237*67e74705SXin Li // RUN:     -fcaller-saves                                                    \
238*67e74705SXin Li // RUN:     -fno-default-inline -fdefault-inline                              \
239*67e74705SXin Li // RUN:     -fgcse-after-reload                                               \
240*67e74705SXin Li // RUN:     -fgcse-las                                                        \
241*67e74705SXin Li // RUN:     -fgcse-sm                                                         \
242*67e74705SXin Li // RUN:     -fipa-cp                                                          \
243*67e74705SXin Li // RUN:     -finline-functions-called-once                                    \
244*67e74705SXin Li // RUN:     -fmodulo-sched                                                    \
245*67e74705SXin Li // RUN:     -fmodulo-sched-allow-regmoves                                     \
246*67e74705SXin Li // RUN:     -fpeel-loops                                                      \
247*67e74705SXin Li // RUN:     -frename-registers                                                \
248*67e74705SXin Li // RUN:     -fschedule-insns2                                                 \
249*67e74705SXin Li // RUN:     -fsingle-precision-constant                                       \
250*67e74705SXin Li // RUN:     -ftree_loop_im                                                    \
251*67e74705SXin Li // RUN:     -ftree_loop_ivcanon                                               \
252*67e74705SXin Li // RUN:     -ftree_loop_linear                                                \
253*67e74705SXin Li // RUN:     -funsafe-loop-optimizations                                       \
254*67e74705SXin Li // RUN:     -fuse-linker-plugin                                               \
255*67e74705SXin Li // RUN:     -fvect-cost-model                                                 \
256*67e74705SXin Li // RUN:     -fvariable-expansion-in-unroller                                  \
257*67e74705SXin Li // RUN:     -fweb                                                             \
258*67e74705SXin Li // RUN:     -fwhole-program                                                   \
259*67e74705SXin Li // RUN:     -fno-tree-dce -ftree-dce                                          \
260*67e74705SXin Li // RUN:     -fno-tree-ter -ftree-ter                                          \
261*67e74705SXin Li // RUN:     -fno-tree-vrp -ftree-vrp                                          \
262*67e74705SXin Li // RUN:     -fno-delete-null-pointer-checks -fdelete-null-pointer-checks      \
263*67e74705SXin Li // RUN:     -fno-inline-small-functions -finline-small-functions              \
264*67e74705SXin Li // RUN:     -fno-fat-lto-objects -ffat-lto-objects                            \
265*67e74705SXin Li // RUN:     -fno-merge-constants -fmerge-constants                            \
266*67e74705SXin Li // RUN:     -fno-caller-saves -fcaller-saves                                  \
267*67e74705SXin Li // RUN:     -fno-reorder-blocks -freorder-blocks                              \
268*67e74705SXin Li // RUN:     -fno-schedule-insns2 -fschedule-insns2                            \
269*67e74705SXin Li // RUN:     -fno-stack-check                                                  \
270*67e74705SXin Li // RUN:     -fno-check-new -fcheck-new                                        \
271*67e74705SXin Li // RUN:     -ffriend-injection                                                \
272*67e74705SXin Li // RUN:     -fno-implement-inlines -fimplement-inlines                        \
273*67e74705SXin Li // RUN:     -fstack-check                                                     \
274*67e74705SXin Li // RUN:     -fforce-addr                                                      \
275*67e74705SXin Li // RUN:     -malign-functions=100                                             \
276*67e74705SXin Li // RUN:     -malign-loops=100                                                 \
277*67e74705SXin Li // RUN:     -malign-jumps=100                                                 \
278*67e74705SXin Li // RUN:     %s 2>&1 | FileCheck --check-prefix=IGNORE %s
279*67e74705SXin Li // IGNORE-NOT: error: unknown argument
280*67e74705SXin Li 
281*67e74705SXin Li // Test that the warning is displayed on these.
282*67e74705SXin Li // RUN: %clang -###                                                           \
283*67e74705SXin Li // RUN: -finline-limit=1000                                                   \
284*67e74705SXin Li // RUN: -finline-limit                                                        \
285*67e74705SXin Li // RUN: -fexpensive-optimizations                                             \
286*67e74705SXin Li // RUN: -fno-expensive-optimizations                                          \
287*67e74705SXin Li // RUN: -fno-defer-pop                                                        \
288*67e74705SXin Li // RUN: -fkeep-inline-functions                                               \
289*67e74705SXin Li // RUN: -fno-keep-inline-functions                                            \
290*67e74705SXin Li // RUN: -freorder-blocks                                                      \
291*67e74705SXin Li // RUN: -fprofile-dir=/rand/dir                                               \
292*67e74705SXin Li // RUN: -falign-functions                                                     \
293*67e74705SXin Li // RUN: -falign-functions=1                                                   \
294*67e74705SXin Li // RUN: -ffloat-store                                                         \
295*67e74705SXin Li // RUN: -fgcse                                                                \
296*67e74705SXin Li // RUN: -fivopts                                                              \
297*67e74705SXin Li // RUN: -fprefetch-loop-arrays                                                \
298*67e74705SXin Li // RUN: -fprofile-correction                                                  \
299*67e74705SXin Li // RUN: -fprofile-values                                                      \
300*67e74705SXin Li // RUN: -frounding-math                                                       \
301*67e74705SXin Li // RUN: -fschedule-insns                                                      \
302*67e74705SXin Li // RUN: -fsignaling-nans                                                      \
303*67e74705SXin Li // RUN: -fstrength-reduce                                                     \
304*67e74705SXin Li // RUN: -ftracer                                                              \
305*67e74705SXin Li // RUN: -funroll-all-loops                                                    \
306*67e74705SXin Li // RUN: -funswitch-loops                                                      \
307*67e74705SXin Li // RUN: -flto=1                                                               \
308*67e74705SXin Li // RUN: -falign-labels                                                        \
309*67e74705SXin Li // RUN: -falign-labels=100                                                    \
310*67e74705SXin Li // RUN: -falign-loops                                                         \
311*67e74705SXin Li // RUN: -falign-loops=100                                                     \
312*67e74705SXin Li // RUN: -falign-jumps                                                         \
313*67e74705SXin Li // RUN: -falign-jumps=100                                                     \
314*67e74705SXin Li // RUN: -fexcess-precision=100                                                \
315*67e74705SXin Li // RUN: -fbranch-count-reg                                                    \
316*67e74705SXin Li // RUN: -fcaller-saves                                                        \
317*67e74705SXin Li // RUN: -fno-default-inline                                                   \
318*67e74705SXin Li // RUN: -fgcse-after-reload                                                   \
319*67e74705SXin Li // RUN: -fgcse-las                                                            \
320*67e74705SXin Li // RUN: -fgcse-sm                                                             \
321*67e74705SXin Li // RUN: -fipa-cp                                                              \
322*67e74705SXin Li // RUN: -finline-functions-called-once                                        \
323*67e74705SXin Li // RUN: -fmodulo-sched                                                        \
324*67e74705SXin Li // RUN: -fmodulo-sched-allow-regmoves                                         \
325*67e74705SXin Li // RUN: -fpeel-loops                                                          \
326*67e74705SXin Li // RUN: -frename-registers                                                    \
327*67e74705SXin Li // RUN: -fschedule-insns2                                                     \
328*67e74705SXin Li // RUN: -fsingle-precision-constant                                           \
329*67e74705SXin Li // RUN: -ftree_loop_im                                                        \
330*67e74705SXin Li // RUN: -ftree_loop_ivcanon                                                   \
331*67e74705SXin Li // RUN: -ftree_loop_linear                                                    \
332*67e74705SXin Li // RUN: -funsafe-loop-optimizations                                           \
333*67e74705SXin Li // RUN: -fuse-linker-plugin                                                   \
334*67e74705SXin Li // RUN: -fvect-cost-model                                                     \
335*67e74705SXin Li // RUN: -fvariable-expansion-in-unroller                                      \
336*67e74705SXin Li // RUN: -fweb                                                                 \
337*67e74705SXin Li // RUN: -fwhole-program                                                       \
338*67e74705SXin Li // RUN: -fcaller-saves                                                        \
339*67e74705SXin Li // RUN: -freorder-blocks                                                      \
340*67e74705SXin Li // RUN: -fdelete-null-pointer-checks                                          \
341*67e74705SXin Li // RUN: -ffat-lto-objects                                                     \
342*67e74705SXin Li // RUN: -fmerge-constants                                                     \
343*67e74705SXin Li // RUN: -finline-small-functions                                              \
344*67e74705SXin Li // RUN: -ftree-dce                                                            \
345*67e74705SXin Li // RUN: -ftree-ter                                                            \
346*67e74705SXin Li // RUN: -ftree-vrp                                                            \
347*67e74705SXin Li // RUN: -fno-devirtualize                                                     \
348*67e74705SXin Li // RUN: -fno-devirtualize-speculatively                                       \
349*67e74705SXin Li // RUN: %s 2>&1 | FileCheck --check-prefix=CHECK-WARNING %s
350*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-finline-limit=1000' is not supported
351*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-finline-limit' is not supported
352*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fexpensive-optimizations' is not supported
353*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fno-expensive-optimizations' is not supported
354*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fno-defer-pop' is not supported
355*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fkeep-inline-functions' is not supported
356*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fno-keep-inline-functions' is not supported
357*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-freorder-blocks' is not supported
358*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fprofile-dir=/rand/dir' is not supported
359*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-falign-functions' is not supported
360*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-falign-functions=1' is not supported
361*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-ffloat-store' is not supported
362*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fgcse' is not supported
363*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fivopts' is not supported
364*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fprefetch-loop-arrays' is not supported
365*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fprofile-correction' is not supported
366*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fprofile-values' is not supported
367*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-frounding-math' is not supported
368*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fschedule-insns' is not supported
369*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fsignaling-nans' is not supported
370*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fstrength-reduce' is not supported
371*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-ftracer' is not supported
372*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-funroll-all-loops' is not supported
373*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-funswitch-loops' is not supported
374*67e74705SXin Li // CHECK-WARNING-DAG: unsupported argument '1' to option 'flto='
375*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-falign-labels' is not supported
376*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-falign-labels=100' is not supported
377*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-falign-loops' is not supported
378*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-falign-loops=100' is not supported
379*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-falign-jumps' is not supported
380*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-falign-jumps=100' is not supported
381*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fexcess-precision=100' is not supported
382*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fbranch-count-reg' is not supported
383*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fcaller-saves' is not supported
384*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fno-default-inline' is not supported
385*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fgcse-after-reload' is not supported
386*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fgcse-las' is not supported
387*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fgcse-sm' is not supported
388*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fipa-cp' is not supported
389*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-finline-functions-called-once' is not supported
390*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fmodulo-sched' is not supported
391*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fmodulo-sched-allow-regmoves' is not supported
392*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fpeel-loops' is not supported
393*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-frename-registers' is not supported
394*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fschedule-insns2' is not supported
395*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fsingle-precision-constant' is not supported
396*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-ftree_loop_im' is not supported
397*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-ftree_loop_ivcanon' is not supported
398*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-ftree_loop_linear' is not supported
399*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-funsafe-loop-optimizations' is not supported
400*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fuse-linker-plugin' is not supported
401*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fvect-cost-model' is not supported
402*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fvariable-expansion-in-unroller' is not supported
403*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fweb' is not supported
404*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fwhole-program' is not supported
405*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fcaller-saves' is not supported
406*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-freorder-blocks' is not supported
407*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fdelete-null-pointer-checks' is not supported
408*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-ffat-lto-objects' is not supported
409*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fmerge-constants' is not supported
410*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-finline-small-functions' is not supported
411*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-ftree-dce' is not supported
412*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-ftree-ter' is not supported
413*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-ftree-vrp' is not supported
414*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fno-devirtualize' is not supported
415*67e74705SXin Li // CHECK-WARNING-DAG: optimization flag '-fno-devirtualize-speculatively' is not supported
416*67e74705SXin Li 
417*67e74705SXin Li // Test that we mute the warning on these
418*67e74705SXin Li // RUN: %clang -### -finline-limit=1000 -Wno-invalid-command-line-argument              \
419*67e74705SXin Li // RUN:     %s 2>&1 | FileCheck --check-prefix=CHECK-NO-WARNING1 %s
420*67e74705SXin Li // RUN: %clang -### -finline-limit -Wno-invalid-command-line-argument                   \
421*67e74705SXin Li // RUN:     %s 2>&1 | FileCheck --check-prefix=CHECK-NO-WARNING2 %s
422*67e74705SXin Li // RUN: %clang -### -finline-limit \
423*67e74705SXin Li // RUN:     -Winvalid-command-line-argument -Wno-ignored-optimization-argument          \
424*67e74705SXin Li // RUN:     %s 2>&1 | FileCheck --check-prefix=CHECK-NO-WARNING2 %s
425*67e74705SXin Li // CHECK-NO-WARNING1-NOT: optimization flag '-finline-limit=1000' is not supported
426*67e74705SXin Li // CHECK-NO-WARNING2-NOT: optimization flag '-finline-limit' is not supported
427*67e74705SXin Li 
428*67e74705SXin Li // Test that an ignored optimization argument only prints 1 warning,
429*67e74705SXin Li // not both a warning about not claiming the arg, *and* about not supporting
430*67e74705SXin Li // the arg; and that adding -Wno-ignored-optimization silences the warning.
431*67e74705SXin Li //
432*67e74705SXin Li // RUN: %clang -### -fprofile-correction %s 2>&1 \
433*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NO-WARNING3 %s
434*67e74705SXin Li // CHECK-NO-WARNING3: optimization flag '-fprofile-correction' is not supported
435*67e74705SXin Li // CHECK-NO-WARNING3-NOT: argument unused
436*67e74705SXin Li // RUN: %clang -### -fprofile-correction -Wno-ignored-optimization-argument %s 2>&1 \
437*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NO-WARNING4 %s
438*67e74705SXin Li // CHECK-NO-WARNING4-NOT: not supported
439*67e74705SXin Li // CHECK-NO-WARNING4-NOT: argument unused
440*67e74705SXin Li 
441*67e74705SXin Li // RUN: %clang -### -S -fsigned-char %s 2>&1 | FileCheck -check-prefix=CHAR-SIGN1 %s
442*67e74705SXin Li // CHAR-SIGN1-NOT: -fno-signed-char
443*67e74705SXin Li 
444*67e74705SXin Li // RUN: %clang -### -S -funsigned-char %s 2>&1 | FileCheck -check-prefix=CHAR-SIGN2 %s
445*67e74705SXin Li // CHAR-SIGN2: -fno-signed-char
446*67e74705SXin Li 
447*67e74705SXin Li // RUN: %clang -### -S -fno-signed-char %s 2>&1 | FileCheck -check-prefix=CHAR-SIGN3 %s
448*67e74705SXin Li // CHAR-SIGN3: -fno-signed-char
449*67e74705SXin Li 
450*67e74705SXin Li // RUN: %clang -### -S -fno-unsigned-char %s 2>&1 | FileCheck -check-prefix=CHAR-SIGN4 %s
451*67e74705SXin Li // CHAR-SIGN4-NOT: -fno-signed-char
452*67e74705SXin Li 
453*67e74705SXin Li // RUN: %clang -### -fshort-wchar -fno-short-wchar %s 2>&1 | FileCheck -check-prefix=CHECK-WCHAR1 -check-prefix=DELIMITERS %s
454*67e74705SXin Li // RUN: %clang -### -fno-short-wchar -fshort-wchar %s 2>&1 | FileCheck -check-prefix=CHECK-WCHAR2 -check-prefix=DELIMITERS %s
455*67e74705SXin Li // Make sure we don't match the -NOT lines with the linker invocation.
456*67e74705SXin Li // Delimiters match the start of the cc1 and the start of the linker lines
457*67e74705SXin Li // DELIMITERS: {{^ *"}}
458*67e74705SXin Li // CHECK-WCHAR1: -fno-short-wchar
459*67e74705SXin Li // CHECK-WCHAR1-NOT: -fshort-wchar
460*67e74705SXin Li // CHECK-WCHAR2: -fshort-wchar
461*67e74705SXin Li // CHECK-WCHAR2-NOT: -fno-short-wchar
462*67e74705SXin Li // DELIMITERS: {{^ *"}}
463