]> granicus.if.org Git - clang/blob - test/Driver/gfortran.f90
Driver must return non-zero code on errors in command line
[clang] / test / Driver / gfortran.f90
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"