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