• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 /c -### -- %s 2>&1 | FileCheck -check-prefix=DEFAULT %s
5 // DEFAULT: "-o" "cl-outputs.obj"
6 
7 // RUN: %clang_cl /Fo -### -- %s 2>&1 | FileCheck -check-prefix=FoEMPTY %s
8 // FoEMPTY:  "-o" "cl-outputs.obj"
9 
10 // RUN: %clang_cl /Foa -### -- %s 2>&1 | FileCheck -check-prefix=FoNAME %s
11 // FoNAME:  "-o" "a.obj"
12 
13 // RUN: %clang_cl /Foa.ext /Fob.ext -### -- %s 2>&1 | FileCheck -check-prefix=FoNAMEEXT %s
14 // FoNAMEEXT:  "-o" "b.ext"
15 
16 // RUN: %clang_cl /Fofoo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FoDIR %s
17 // FoDIR:  "-o" "foo.dir{{[/\\]+}}cl-outputs.obj"
18 
19 // RUN: %clang_cl /Fofoo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FoDIRNAME %s
20 // FoDIRNAME:  "-o" "foo.dir{{[/\\]+}}a.obj"
21 
22 // RUN: %clang_cl /Fofoo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FoDIRNAMEEXT %s
23 // FoDIRNAMEEXT:  "-o" "foo.dir{{[/\\]+}}a.ext"
24 
25 // RUN: %clang_cl /Fo.. -### -- %s 2>&1 | FileCheck -check-prefix=FoCRAZY %s
26 // FoCRAZY:  "-o" "..obj"
27 
28 // RUN: %clang_cl /Foa.obj -### -- %s %s 2>&1 | FileCheck -check-prefix=CHECK-MULTIPLESOURCEERROR %s
29 // CHECK-MULTIPLESOURCEERROR: error: cannot specify '/Foa.obj' when compiling multiple source files
30 
31 // RUN: %clang_cl /Fomydir/ -### -- %s %s 2>&1 | FileCheck -check-prefix=CHECK-MULTIPLESOURCEOK %s
32 // CHECK-MULTIPLESOURCEOK: "-o" "mydir{{[/\\]+}}cl-outputs.obj"
33 
34 // RUN: %clang_cl /Fo -### -- %s %s 2>&1 | FileCheck -check-prefix=CHECK-MULTIPLESOURCEOK2 %s
35 // CHECK-MULTIPLESOURCEOK2: "-o" "cl-outputs.obj"
36 // CHECK-MULTIPLESOURCEOK2: "-o" "cl-outputs.obj"
37 
38 // RUN: %clang_cl /c /oa -### -- %s 2>&1 | FileCheck -check-prefix=oNAME1 %s
39 // oNAME1:  "-o" "a.obj"
40 
41 // RUN: %clang_cl /c /o a -### -- %s 2>&1 | FileCheck -check-prefix=oNAME2 %s
42 // oNAME2:  "-o" "a.obj"
43 
44 // RUN: %clang_cl /c /oa.ext /ob.ext -### -- %s 2>&1 | FileCheck -check-prefix=oNAMEEXT1 %s
45 // oNAMEEXT1:  "-o" "b.ext"
46 
47 // RUN: %clang_cl /c /o a.ext /ob.ext -### -- %s 2>&1 | FileCheck -check-prefix=oNAMEEXT2 %s
48 // oNAMEEXT2:  "-o" "b.ext"
49 
50 // RUN: %clang_cl /c /ofoo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=oDIR1 %s
51 // oDIR1:  "-o" "foo.dir{{[/\\]+}}cl-outputs.obj"
52 
53 // RUN: %clang_cl /c /o foo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=oDIR2 %s
54 // oDIR2:  "-o" "foo.dir{{[/\\]+}}cl-outputs.obj"
55 
56 // RUN: %clang_cl /c /ofoo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=oDIRNAME1 %s
57 // oDIRNAME1:  "-o" "foo.dir{{[/\\]+}}a.obj"
58 
59 // RUN: %clang_cl /c /o foo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=oDIRNAME2 %s
60 // oDIRNAME2:  "-o" "foo.dir{{[/\\]+}}a.obj"
61 
62 // RUN: %clang_cl /c /ofoo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=oDIRNAMEEXT1 %s
63 // oDIRNAMEEXT1:  "-o" "foo.dir{{[/\\]+}}a.ext"
64 
65 // RUN: %clang_cl /c /o foo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=oDIRNAMEEXT2 %s
66 // oDIRNAMEEXT2:  "-o" "foo.dir{{[/\\]+}}a.ext"
67 
68 // RUN: %clang_cl /c /o.. -### -- %s 2>&1 | FileCheck -check-prefix=oCRAZY1 %s
69 // oCRAZY1:  "-o" "..obj"
70 
71 // RUN: %clang_cl /c /o .. -### -- %s 2>&1 | FileCheck -check-prefix=oCRAZY2 %s
72 // oCRAZY2:  "-o" "..obj"
73 
74 // RUN: %clang_cl /c %s -### /o 2>&1 | FileCheck -check-prefix=oMISSINGARG %s
75 // oMISSINGARG: error: argument to '/o' is missing (expected 1 value)
76 
77 // RUN: %clang_cl /c /omydir/ -### -- %s %s 2>&1 | FileCheck -check-prefix=CHECK-oMULTIPLESOURCEOK1 %s
78 // CHECK-oMULTIPLESOURCEOK1: "-o" "mydir{{[/\\]+}}cl-outputs.obj"
79 
80 // RUN: %clang_cl /c /o mydir/ -### -- %s %s 2>&1 | FileCheck -check-prefix=CHECK-oMULTIPLESOURCEOK2 %s
81 // CHECK-oMULTIPLESOURCEOK2: "-o" "mydir{{[/\\]+}}cl-outputs.obj"
82 
83 
84 // RUN: %clang_cl /c /obar /Fofoo -### -- %s 2>&1 | FileCheck -check-prefix=FooRACE1 %s
85 // FooRACE1: "-o" "foo.obj"
86 
87 // RUN: %clang_cl /c /Fofoo /obar -### -- %s 2>&1 | FileCheck -check-prefix=FooRACE2 %s
88 // FooRACE2: "-o" "bar.obj"
89 
90 
91 // RUN: %clang_cl -### -- %s 2>&1 | FileCheck -check-prefix=DEFAULTEXE %s
92 // DEFAULTEXE: cl-outputs.exe
93 
94 // RUN: %clang_cl /LD -### -- %s 2>&1 | FileCheck -check-prefix=DEFAULTDLL %s
95 // RUN: %clang_cl /LDd -### -- %s 2>&1 | FileCheck -check-prefix=DEFAULTDLL %s
96 // DEFAULTDLL: "-out:cl-outputs.dll"
97 // DEFAULTDLL: "-implib:cl-outputs.lib"
98 
99 // RUN: %clang_cl /Fefoo -### -- %s 2>&1 | FileCheck -check-prefix=FeNOEXT %s
100 // FeNOEXT: "-out:foo.exe"
101 
102 // RUN: %clang_cl /Fe -### -- %s 2>&1 | FileCheck -check-prefix=FeEMPTY %s
103 // FeEMPTY-NOT: argument to '/Fe' is missing
104 // FeEMPTY: "-out:cl-outputs.exe"
105 
106 // RUN: %clang_cl /Fefoo /LD -### -- %s 2>&1 | FileCheck -check-prefix=FeNOEXTDLL %s
107 // RUN: %clang_cl /Fefoo /LDd -### -- %s 2>&1 | FileCheck -check-prefix=FeNOEXTDLL %s
108 // FeNOEXTDLL: "-out:foo.dll"
109 // FeNOEXTDLL: "-implib:foo.lib"
110 
111 // RUN: %clang_cl /Fefoo.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeEXT %s
112 // FeEXT: "-out:foo.ext"
113 
114 // RUN: %clang_cl /LD /Fefoo.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeEXTDLL %s
115 // RUN: %clang_cl /LDd /Fefoo.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeEXTDLL %s
116 // FeEXTDLL: "-out:foo.ext"
117 // FeEXTDLL: "-implib:foo.lib"
118 
119 // RUN: %clang_cl /Fefoo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FeDIR %s
120 // FeDIR: "-out:foo.dir{{[/\\]+}}cl-outputs.exe"
121 
122 // RUN: %clang_cl /LD /Fefoo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRDLL %s
123 // RUN: %clang_cl /LDd /Fefoo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRDLL %s
124 // FeDIRDLL: "-out:foo.dir{{[/\\]+}}cl-outputs.dll"
125 // FeDIRDLL: "-implib:foo.dir{{[/\\]+}}cl-outputs.lib"
126 
127 // RUN: %clang_cl /Fefoo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRNAME %s
128 // FeDIRNAME: "-out:foo.dir{{[/\\]+}}a.exe"
129 
130 // RUN: %clang_cl /LD /Fefoo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRNAMEDLL %s
131 // RUN: %clang_cl /LDd /Fefoo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRNAMEDLL %s
132 // FeDIRNAMEDLL: "-out:foo.dir{{[/\\]+}}a.dll"
133 // FeDIRNAMEDLL: "-implib:foo.dir{{[/\\]+}}a.lib"
134 
135 // RUN: %clang_cl /Fefoo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRNAMEEXT %s
136 // FeDIRNAMEEXT: "-out:foo.dir{{[/\\]+}}a.ext"
137 
138 // RUN: %clang_cl /LD /Fefoo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRNAMEEXTDLL %s
139 // RUN: %clang_cl /LDd /Fefoo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRNAMEEXTDLL %s
140 // FeDIRNAMEEXTDLL: "-out:foo.dir{{[/\\]+}}a.ext"
141 // FeDIRNAMEEXTDLL: "-implib:foo.dir{{[/\\]+}}a.lib"
142 
143 // RUN: %clang_cl /Fefoo /Febar -### -- %s 2>&1 | FileCheck -check-prefix=FeOVERRIDE %s
144 // FeOVERRIDE: "-out:bar.exe"
145 
146 
147 // RUN: %clang_cl /obar /Fefoo -### -- %s 2>&1 | FileCheck -check-prefix=FeoRACE1 %s
148 // FeoRACE1: "-out:foo.exe"
149 
150 // RUN: %clang_cl /Fefoo /obar -### -- %s 2>&1 | FileCheck -check-prefix=FeoRACE2 %s
151 // FeoRACE2: "-out:bar.exe"
152 
153 
154 // RUN: %clang_cl /ofoo -### -- %s 2>&1 | FileCheck -check-prefix=FeoNOEXT1 %s
155 // FeoNOEXT1: "-out:foo.exe"
156 
157 // RUN: %clang_cl /o foo -### -- %s 2>&1 | FileCheck -check-prefix=FeoNOEXT2 %s
158 // FeoNOEXT2: "-out:foo.exe"
159 
160 // RUN: %clang_cl /o foo /LD -### -- %s 2>&1 | FileCheck -check-prefix=FeoNOEXTDLL %s
161 // RUN: %clang_cl /ofoo /LDd -### -- %s 2>&1 | FileCheck -check-prefix=FeoNOEXTDLL %s
162 // FeoNOEXTDLL: "-out:foo.dll"
163 // FeoNOEXTDLL: "-implib:foo.lib"
164 
165 // RUN: %clang_cl /ofoo.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeoEXT1 %s
166 // FeoEXT1: "-out:foo.ext"
167 
168 // RUN: %clang_cl /o foo.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeoEXT2 %s
169 // FeoEXT2: "-out:foo.ext"
170 
171 // RUN: %clang_cl /LD /o foo.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeoEXTDLL %s
172 // RUN: %clang_cl /LDd /ofoo.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeoEXTDLL %s
173 // FeoEXTDLL: "-out:foo.ext"
174 // FeoEXTDLL: "-implib:foo.lib"
175 
176 // RUN: %clang_cl /ofoo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FeoDIR1 %s
177 // FeoDIR1: "-out:foo.dir{{[/\\]+}}cl-outputs.exe"
178 
179 // RUN: %clang_cl /o foo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FeoDIR2 %s
180 // FeoDIR2: "-out:foo.dir{{[/\\]+}}cl-outputs.exe"
181 
182 // RUN: %clang_cl /LD /o foo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FeoDIRDLL %s
183 // RUN: %clang_cl /LDd /ofoo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FeoDIRDLL %s
184 // FeoDIRDLL: "-out:foo.dir{{[/\\]+}}cl-outputs.dll"
185 // FeoDIRDLL: "-implib:foo.dir{{[/\\]+}}cl-outputs.lib"
186 
187 // RUN: %clang_cl /ofoo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FeoDIRNAME1 %s
188 // FeoDIRNAME1: "-out:foo.dir{{[/\\]+}}a.exe"
189 
190 // RUN: %clang_cl /o foo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FeoDIRNAME2 %s
191 // FeoDIRNAME2: "-out:foo.dir{{[/\\]+}}a.exe"
192 
193 // RUN: %clang_cl /LD /o foo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FeoDIRNAMEDLL %s
194 // RUN: %clang_cl /LDd /ofoo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FeoDIRNAMEDLL %s
195 // FeoDIRNAMEDLL: "-out:foo.dir{{[/\\]+}}a.dll"
196 // FeoDIRNAMEDLL: "-implib:foo.dir{{[/\\]+}}a.lib"
197 
198 // RUN: %clang_cl /ofoo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeoDIRNAMEEXT1 %s
199 // FeoDIRNAMEEXT1: "-out:foo.dir{{[/\\]+}}a.ext"
200 
201 // RUN: %clang_cl /o foo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeoDIRNAMEEXT2 %s
202 // FeoDIRNAMEEXT2: "-out:foo.dir{{[/\\]+}}a.ext"
203 
204 // RUN: %clang_cl /LD /o foo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeoDIRNAMEEXTDLL %s
205 // RUN: %clang_cl /LDd /ofoo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeoDIRNAMEEXTDLL %s
206 // FeoDIRNAMEEXTDLL: "-out:foo.dir{{[/\\]+}}a.ext"
207 // FeoDIRNAMEEXTDLL: "-implib:foo.dir{{[/\\]+}}a.lib"
208 
209 // RUN: %clang_cl -### /o 2>&1 | FileCheck -check-prefix=FeoMISSINGARG %s
210 // FeoMISSINGARG: error: argument to '/o' is missing (expected 1 value)
211 
212 // RUN: %clang_cl /ofoo /o bar -### -- %s 2>&1 | FileCheck -check-prefix=FeoOVERRIDE %s
213 // FeoOVERRIDE: "-out:bar.exe"
214 
215 
216 // RUN: %clang_cl /FA -### -- %s 2>&1 | FileCheck -check-prefix=FA %s
217 // FA: "-o" "cl-outputs.asm"
218 // RUN: %clang_cl /FA /Fa -### -- %s 2>&1 | FileCheck -check-prefix=FaEMPTY %s
219 // FaEMPTY: "-o" "cl-outputs.asm"
220 // RUN: %clang_cl /FA /Fafoo -### -- %s 2>&1 | FileCheck -check-prefix=FaNAME %s
221 // RUN: %clang_cl /Fafoo -### -- %s 2>&1 | FileCheck -check-prefix=FaNAME %s
222 // FaNAME:  "-o" "foo.asm"
223 // RUN: %clang_cl /FA /Faa.ext /Fab.ext -### -- %s 2>&1 | FileCheck -check-prefix=FaNAMEEXT %s
224 // FaNAMEEXT:  "-o" "b.ext"
225 // RUN: %clang_cl /FA /Fafoo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FaDIR %s
226 // FaDIR:  "-o" "foo.dir{{[/\\]+}}cl-outputs.asm"
227 // RUN: %clang_cl /FA /Fafoo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FaDIRNAME %s
228 // FaDIRNAME:  "-o" "foo.dir{{[/\\]+}}a.asm"
229 // RUN: %clang_cl /FA /Fafoo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FaDIRNAMEEXT %s
230 // FaDIRNAMEEXT:  "-o" "foo.dir{{[/\\]+}}a.ext"
231 // RUN: %clang_cl /Faa.asm -### -- %s %s 2>&1 | FileCheck -check-prefix=FaMULTIPLESOURCE %s
232 // FaMULTIPLESOURCE: error: cannot specify '/Faa.asm' when compiling multiple source files
233 // RUN: %clang_cl /Fa -### -- %s %s 2>&1 | FileCheck -check-prefix=FaMULTIPLESOURCEOK %s
234 // FaMULTIPLESOURCEOK: "-o" "cl-outputs.asm"
235 // FaMULTIPLESOURCEOK: "-o" "cl-outputs.asm"
236 
237 // RUN: %clang_cl /P -### -- %s 2>&1 | FileCheck -check-prefix=P %s
238 // P: "-E"
239 // P: "-o" "cl-outputs.i"
240 
241 // RUN: %clang_cl /P /Fifoo -### -- %s 2>&1 | FileCheck -check-prefix=Fi1 %s
242 // Fi1: "-E"
243 // Fi1: "-o" "foo.i"
244 
245 // RUN: %clang_cl /P /Fifoo.x -### -- %s 2>&1 | FileCheck -check-prefix=Fi2 %s
246 // Fi2: "-E"
247 // Fi2: "-o" "foo.x"
248 
249 // To match MSVC behavior /o should be ignored for /P output.
250 
251 // RUN: %clang_cl /P /ofoo -### -- %s 2>&1 | FileCheck -check-prefix=Fio1 %s
252 // Fio1: "-E"
253 // Fio1: "-o" "cl-outputs.i"
254 
255 // RUN: %clang_cl /P /o foo.x -### -- %s 2>&1 | FileCheck -check-prefix=Fio2 %s
256 // Fio2: "-E"
257 // Fio2: "-o" "cl-outputs.i"
258 
259 // RUN: %clang_cl /P /obar.x /Fifoo.x -### -- %s 2>&1 | FileCheck -check-prefix=FioRACE1 %s
260 // FioRACE1: "-E"
261 // FioRACE1: "-o" "foo.x"
262 
263 // RUN: %clang_cl /P /Fifoo.x /obar.x -### -- %s 2>&1 | FileCheck -check-prefix=FioRACE2 %s
264 // FioRACE2: "-E"
265 // FioRACE2: "-o" "foo.x"
266