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