1 | ! Test that Clang can forward all of the flags which are documented as |
2 | ! being supported by gfortran to GCC when falling back to GCC for |
3 | ! a fortran input file. |
4 | ! |
5 | ! RUN: %clang -no-canonical-prefixes -target i386-linux -### %s -o %t 2>&1 \ |
6 | ! RUN: -Aquestion=answer \ |
7 | ! RUN: -A-question=answer \ |
8 | ! RUN: -C \ |
9 | ! RUN: -CC \ |
10 | ! RUN: -Dmacro \ |
11 | ! RUN: -Dmacro=value \ |
12 | ! RUN: -H \ |
13 | ! RUN: -Isome/directory \ |
14 | ! RUN: -Jsome/other/directory \ |
15 | ! RUN: -P \ |
16 | ! RUN: -Umacro \ |
17 | ! RUN: -Waliasing \ |
18 | ! RUN: -Walign-commons \ |
19 | ! RUN: -Wall \ |
20 | ! RUN: -Wampersand \ |
21 | ! RUN: -Warray-bounds \ |
22 | ! RUN: -Wc-binding-type \ |
23 | ! RUN: -Wcharacter-truncation \ |
24 | ! RUN: -Wconversion \ |
25 | ! RUN: -Wfunction-elimination \ |
26 | ! RUN: -Wimplicit-interface \ |
27 | ! RUN: -Wimplicit-procedure \ |
28 | ! RUN: -Wintrinsic-shadow \ |
29 | ! RUN: -Wintrinsics-std \ |
30 | ! RUN: -Wline-truncation \ |
31 | ! RUN: -Wreal-q-constant \ |
32 | ! RUN: -Wrealloc-lhs \ |
33 | ! RUN: -Wsurprising \ |
34 | ! RUN: -Wtabs \ |
35 | ! RUN: -Wtarget-lifetime \ |
36 | ! RUN: -Wunderflow \ |
37 | ! RUN: -Wunused-parameter \ |
38 | ! RUN: -cpp \ |
39 | ! RUN: -dD \ |
40 | ! RUN: -dI \ |
41 | ! RUN: -dM \ |
42 | ! RUN: -dN \ |
43 | ! RUN: -dU \ |
44 | ! RUN: -faggressive-function-elimination \ |
45 | ! RUN: -falign-commons \ |
46 | ! RUN: -fall-intrinsics \ |
47 | ! RUN: -fautomatic \ |
48 | ! RUN: -fbackslash \ |
49 | ! RUN: -fbacktrace \ |
50 | ! RUN: -fblas-matmul-limit=42 \ |
51 | ! RUN: -fbounds-check \ |
52 | ! RUN: -fcheck-array-temporaries \ |
53 | ! RUN: -fcheck=all \ |
54 | ! RUN: -fcoarray=none \ |
55 | ! RUN: -fconvert=foobar \ |
56 | ! RUN: -fcray-pointer \ |
57 | ! RUN: -fd-lines-as-code \ |
58 | ! RUN: -fd-lines-as-comments \ |
59 | ! RUN: -fdefault-double-8 \ |
60 | ! RUN: -fdefault-integer-8 \ |
61 | ! RUN: -fdefault-real-8 \ |
62 | ! RUN: -fdollar-ok \ |
63 | ! RUN: -fdump-fortran-optimized \ |
64 | ! RUN: -fdump-fortran-original \ |
65 | ! RUN: -fdump-parse-tree \ |
66 | ! RUN: -fexternal-blas \ |
67 | ! RUN: -ff2c \ |
68 | ! RUN: -ffixed-form \ |
69 | ! RUN: -ffixed-line-length-42 \ |
70 | ! RUN: -ffpe-trap=list \ |
71 | ! RUN: -ffree-form \ |
72 | ! RUN: -ffree-line-length-42 \ |
73 | ! RUN: -ffrontend-optimize \ |
74 | ! RUN: -fimplicit-none \ |
75 | ! RUN: -finit-character=n \ |
76 | ! RUN: -finit-integer=n \ |
77 | ! RUN: -finit-local-zero \ |
78 | ! RUN: -finit-logical=false \ |
79 | ! RUN: -finit-real=zero \ |
80 | ! RUN: -finteger-4-integer-8 \ |
81 | ! RUN: -fintrinsic-modules-path \ |
82 | ! RUN: -fmax-array-constructor=42 \ |
83 | ! RUN: -fmax-errors=42 \ |
84 | ! RUN: -fmax-identifier-length \ |
85 | ! RUN: -fmax-stack-var-size=42 \ |
86 | ! RUN: -fmax-subrecord-length=42 \ |
87 | ! RUN: -fmodule-private \ |
88 | ! RUN: -fopenmp \ |
89 | ! RUN: -fpack-derived \ |
90 | ! RUN: -fprotect-parens \ |
91 | ! RUN: -frange-check \ |
92 | ! RUN: -freal-4-real-10 \ |
93 | ! RUN: -freal-4-real-16 \ |
94 | ! RUN: -freal-4-real-8 \ |
95 | ! RUN: -freal-8-real-10 \ |
96 | ! RUN: -freal-8-real-16 \ |
97 | ! RUN: -freal-8-real-4 \ |
98 | ! RUN: -frealloc-lhs \ |
99 | ! RUN: -frecord-marker=42 \ |
100 | ! RUN: -frecursive \ |
101 | ! RUN: -frepack-arrays \ |
102 | ! RUN: -fsecond-underscore \ |
103 | ! RUN: -fshort-enums \ |
104 | ! RUN: -fsign-zero \ |
105 | ! RUN: -fstack-arrays \ |
106 | ! RUN: -fsyntax-only \ |
107 | ! RUN: -funderscoring \ |
108 | ! RUN: -fwhole-file \ |
109 | ! RUN: -imultilib \ |
110 | ! RUN: -iprefix \ |
111 | ! RUN: -iquote \ |
112 | ! RUN: -isysroot \ |
113 | ! RUN: -isystem \ |
114 | ! RUN: -nocpp \ |
115 | ! RUN: -nostdinc \ |
116 | ! RUN: -pedantic \ |
117 | ! RUN: -pedantic-errors \ |
118 | ! RUN: -static-libgfortran \ |
119 | ! RUN: -std=f90 \ |
120 | ! RUN: -undef \ |
121 | ! RUN: | FileCheck %s |
122 | ! |
123 | ! FIXME: Several of these shouldn't necessarily be rendered separately |
124 | ! when passing to GCC... Hopefully their driver handles this. |
125 | ! |
126 | ! CHECK: "-Aquestion=answer" |
127 | ! CHECK: "-A-question=answer" |
128 | ! CHECK: "-C" |
129 | ! CHECK: "-CC" |
130 | ! CHECK: "-D" "macro" |
131 | ! CHECK: "-D" "macro=value" |
132 | ! CHECK: "-H" |
133 | ! CHECK: "-I" "some/directory" |
134 | ! CHECK: "-Jsome/other/directory" |
135 | ! CHECK: "-P" |
136 | ! CHECK: "-U" "macro" |
137 | ! CHECK: "-Waliasing" |
138 | ! CHECK: "-Walign-commons" |
139 | ! CHECK: "-Wall" |
140 | ! CHECK: "-Wampersand" |
141 | ! CHECK: "-Warray-bounds" |
142 | ! CHECK: "-Wc-binding-type" |
143 | ! CHECK: "-Wcharacter-truncation" |
144 | ! CHECK: "-Wconversion" |
145 | ! CHECK: "-Wfunction-elimination" |
146 | ! CHECK: "-Wimplicit-interface" |
147 | ! CHECK: "-Wimplicit-procedure" |
148 | ! CHECK: "-Wintrinsic-shadow" |
149 | ! CHECK: "-Wintrinsics-std" |
150 | ! CHECK: "-Wline-truncation" |
151 | ! CHECK: "-Wreal-q-constant" |
152 | ! CHECK: "-Wrealloc-lhs" |
153 | ! CHECK: "-Wsurprising" |
154 | ! CHECK: "-Wtabs" |
155 | ! CHECK: "-Wtarget-lifetime" |
156 | ! CHECK: "-Wunderflow" |
157 | ! CHECK: "-Wunused-parameter" |
158 | ! CHECK: "-cpp" |
159 | ! CHECK: "-dD" |
160 | ! CHECK: "-dI" |
161 | ! CHECK: "-dM" |
162 | ! CHECK: "-dN" |
163 | ! CHECK: "-dU" |
164 | ! CHECK: "-faggressive-function-elimination" |
165 | ! CHECK: "-falign-commons" |
166 | ! CHECK: "-fall-intrinsics" |
167 | ! CHECK: "-fautomatic" |
168 | ! CHECK: "-fbackslash" |
169 | ! CHECK: "-fbacktrace" |
170 | ! CHECK: "-fblas-matmul-limit=42" |
171 | ! CHECK: "-fbounds-check" |
172 | ! CHECK: "-fcheck-array-temporaries" |
173 | ! CHECK: "-fcheck=all" |
174 | ! CHECK: "-fcoarray=none" |
175 | ! CHECK: "-fconvert=foobar" |
176 | ! CHECK: "-fcray-pointer" |
177 | ! CHECK: "-fd-lines-as-code" |
178 | ! CHECK: "-fd-lines-as-comments" |
179 | ! CHECK: "-fdefault-double-8" |
180 | ! CHECK: "-fdefault-integer-8" |
181 | ! CHECK: "-fdefault-real-8" |
182 | ! CHECK: "-fdollar-ok" |
183 | ! CHECK: "-fdump-fortran-optimized" |
184 | ! CHECK: "-fdump-fortran-original" |
185 | ! CHECK: "-fdump-parse-tree" |
186 | ! CHECK: "-fexternal-blas" |
187 | ! CHECK: "-ff2c" |
188 | ! CHECK: "-ffixed-form" |
189 | ! CHECK: "-ffixed-line-length-42" |
190 | ! CHECK: "-ffpe-trap=list" |
191 | ! CHECK: "-ffree-form" |
192 | ! CHECK: "-ffree-line-length-42" |
193 | ! CHECK: "-ffrontend-optimize" |
194 | ! CHECK: "-fimplicit-none" |
195 | ! CHECK: "-finit-character=n" |
196 | ! CHECK: "-finit-integer=n" |
197 | ! CHECK: "-finit-local-zero" |
198 | ! CHECK: "-finit-logical=false" |
199 | ! CHECK: "-finit-real=zero" |
200 | ! CHECK: "-finteger-4-integer-8" |
201 | ! CHECK: "-fintrinsic-modules-path" |
202 | ! CHECK: "-fmax-array-constructor=42" |
203 | ! CHECK: "-fmax-errors=42" |
204 | ! CHECK: "-fmax-identifier-length" |
205 | ! CHECK: "-fmax-stack-var-size=42" |
206 | ! CHECK: "-fmax-subrecord-length=42" |
207 | ! CHECK: "-fmodule-private" |
208 | ! CHECK: "-fopenmp" |
209 | ! CHECK: "-fpack-derived" |
210 | ! CHECK: "-fprotect-parens" |
211 | ! CHECK: "-frange-check" |
212 | ! CHECK: "-freal-4-real-10" |
213 | ! CHECK: "-freal-4-real-16" |
214 | ! CHECK: "-freal-4-real-8" |
215 | ! CHECK: "-freal-8-real-10" |
216 | ! CHECK: "-freal-8-real-16" |
217 | ! CHECK: "-freal-8-real-4" |
218 | ! CHECK: "-frealloc-lhs" |
219 | ! CHECK: "-frecord-marker=42" |
220 | ! CHECK: "-frecursive" |
221 | ! CHECK: "-frepack-arrays" |
222 | ! CHECK: "-fsecond-underscore" |
223 | ! CHECK: "-fshort-enums" |
224 | ! CHECK: "-fsign-zero" |
225 | ! CHECK: "-fstack-arrays" |
226 | ! CHECK: "-funderscoring" |
227 | ! CHECK: "-fwhole-file" |
228 | ! CHECK: "-imultilib" |
229 | ! CHECK: "-iprefix" |
230 | ! CHECK: "-iquote" |
231 | ! CHECK: "-isysroot" |
232 | ! CHECK: "-isystem" |
233 | ! CHECK: "-nocpp" |
234 | ! CHECK: "-nostdinc" |
235 | ! CHECK: "-pedantic" |
236 | ! CHECK: "-pedantic-errors" |
237 | ! CHECK: "-static-libgfortran" |
238 | ! CHECK: "-std=f90" |
239 | ! CHECK: "-undef" |
240 | ! |
241 | ! Clang understands this one and orders it weirdly. |
242 | ! CHECK: "-fsyntax-only" |
243 | ! |
244 | ! PR22234: Ensure that -fsyntax-only doesn't complain about output types and |
245 | ! passes along correctly. |
246 | ! RUN: %clang -no-canonical-prefixes -target i386-linux -fsyntax-only -### %s -o %t 2>&1 | \ |
247 | ! grep for error message and command-line |
248 | ! RUN: grep -e error: -e -fsyntax-only | FileCheck %s --check-prefix=CHECK-PR22234 |
249 | ! |
250 | ! CHECK-PR22234-NOT: clang: error: invalid output type |
251 | ! CHECK-PR22234: "-fsyntax-only" |
252 | ! |
253 | ! Regression test for the bug introduced with PR22234 fix. |
254 | ! Make sure -fsyntax-only is not passed to gfortran during normal compilation. |
255 | ! |
256 | ! RUN: %clang -no-canonical-prefixes -target i386-linux -### %s -o %t 2>&1 \ |
257 | ! RUN: | FileCheck %s --check-prefix=CHECK-PR22234-R |
258 | ! CHECK-PR22234-R-NOT: "-fsyntax-only" |
259 | |