blob: d2f90b47a39021516371da44a299df42ea64cdf2 [file] [log] [blame]
Chandler Carruthb4d179c2013-10-17 03:28:24 +00001! 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 \
Chandler Carruthb4d179c2013-10-17 03:28:24 +0000109! 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"
Chandler Carruthb4d179c2013-10-17 03:28:24 +0000228! 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"
Eric Christophercc7ff502015-01-29 00:56:17 +0000243!
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"
Eric Christopher58c21992015-01-30 18:22:23 +0000252!
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"