teak-llvm/clang/test/Driver/gfortran.f90
Serge Pavlov b43573b9a4 Driver must return non-zero code on errors in command line
This is recommit of r302775, reverted in r302777 due to a fail in
clang-tidy. Original mesage is below.

Now if clang driver is given wrong arguments, in some cases it
continues execution and returns zero code. This change fixes this
behavior.

The fix revealed some errors in clang test set.

File test/Driver/gfortran.f90 added in r118203 checks forwarding
gfortran flags to GCC. Now driver reports error on this file, because
the option -working-directory implemented in clang differs from the
option with the same name implemented in gfortran, in clang the option
requires argument, in gfortran does not.

In the file test/Driver/arm-darwin-builtin.c clang is called with
options -fbuiltin-strcat and -fbuiltin-strcpy. These option were removed
in r191435 and now clang reports error on this test.

File arm-default-build-attributes.s uses option -verify, which is not
supported by driver, it is cc1 option.

Similarly, the file split-debug.h uses options -fmodules-embed-all-files
and -fmodule-format=obj, which are not supported by driver.

Other revealed errors are mainly mistypes.

Differential Revision: https://reviews.llvm.org/D33013

llvm-svn: 303756
2017-05-24 14:57:17 +00:00

259 lines
7.3 KiB
Fortran

! Test that Clang can forward all of the flags which are documented as
! being supported by gfortran to GCC when falling back to GCC for
! a fortran input file.
!
! RUN: %clang -no-canonical-prefixes -target i386-linux -### %s -o %t 2>&1 \
! RUN: -Aquestion=answer \
! RUN: -A-question=answer \
! RUN: -C \
! RUN: -CC \
! RUN: -Dmacro \
! RUN: -Dmacro=value \
! RUN: -H \
! RUN: -Isome/directory \
! RUN: -Jsome/other/directory \
! RUN: -P \
! RUN: -Umacro \
! RUN: -Waliasing \
! RUN: -Walign-commons \
! RUN: -Wall \
! RUN: -Wampersand \
! RUN: -Warray-bounds \
! RUN: -Wc-binding-type \
! RUN: -Wcharacter-truncation \
! RUN: -Wconversion \
! RUN: -Wfunction-elimination \
! RUN: -Wimplicit-interface \
! RUN: -Wimplicit-procedure \
! RUN: -Wintrinsic-shadow \
! RUN: -Wintrinsics-std \
! RUN: -Wline-truncation \
! RUN: -Wreal-q-constant \
! RUN: -Wrealloc-lhs \
! RUN: -Wsurprising \
! RUN: -Wtabs \
! RUN: -Wtarget-lifetime \
! RUN: -Wunderflow \
! RUN: -Wunused-parameter \
! RUN: -cpp \
! RUN: -dD \
! RUN: -dI \
! RUN: -dM \
! RUN: -dN \
! RUN: -dU \
! RUN: -faggressive-function-elimination \
! RUN: -falign-commons \
! RUN: -fall-intrinsics \
! RUN: -fautomatic \
! RUN: -fbackslash \
! RUN: -fbacktrace \
! RUN: -fblas-matmul-limit=42 \
! RUN: -fbounds-check \
! RUN: -fcheck-array-temporaries \
! RUN: -fcheck=all \
! RUN: -fcoarray=none \
! RUN: -fconvert=foobar \
! RUN: -fcray-pointer \
! RUN: -fd-lines-as-code \
! RUN: -fd-lines-as-comments \
! RUN: -fdefault-double-8 \
! RUN: -fdefault-integer-8 \
! RUN: -fdefault-real-8 \
! RUN: -fdollar-ok \
! RUN: -fdump-fortran-optimized \
! RUN: -fdump-fortran-original \
! RUN: -fdump-parse-tree \
! RUN: -fexternal-blas \
! RUN: -ff2c \
! RUN: -ffixed-form \
! RUN: -ffixed-line-length-42 \
! RUN: -ffpe-trap=list \
! RUN: -ffree-form \
! RUN: -ffree-line-length-42 \
! RUN: -ffrontend-optimize \
! RUN: -fimplicit-none \
! RUN: -finit-character=n \
! RUN: -finit-integer=n \
! RUN: -finit-local-zero \
! RUN: -finit-logical=false \
! RUN: -finit-real=zero \
! RUN: -finteger-4-integer-8 \
! RUN: -fintrinsic-modules-path \
! RUN: -fmax-array-constructor=42 \
! RUN: -fmax-errors=42 \
! RUN: -fmax-identifier-length \
! RUN: -fmax-stack-var-size=42 \
! RUN: -fmax-subrecord-length=42 \
! RUN: -fmodule-private \
! RUN: -fopenmp \
! RUN: -fpack-derived \
! RUN: -fprotect-parens \
! RUN: -frange-check \
! RUN: -freal-4-real-10 \
! RUN: -freal-4-real-16 \
! RUN: -freal-4-real-8 \
! RUN: -freal-8-real-10 \
! RUN: -freal-8-real-16 \
! RUN: -freal-8-real-4 \
! RUN: -frealloc-lhs \
! RUN: -frecord-marker=42 \
! RUN: -frecursive \
! RUN: -frepack-arrays \
! RUN: -fsecond-underscore \
! RUN: -fshort-enums \
! RUN: -fsign-zero \
! RUN: -fstack-arrays \
! RUN: -fsyntax-only \
! RUN: -funderscoring \
! RUN: -fwhole-file \
! RUN: -imultilib \
! RUN: -iprefix \
! RUN: -iquote \
! RUN: -isysroot \
! RUN: -isystem \
! RUN: -nocpp \
! RUN: -nostdinc \
! RUN: -pedantic \
! RUN: -pedantic-errors \
! RUN: -static-libgfortran \
! RUN: -std=f90 \
! RUN: -undef \
! RUN: | FileCheck %s
!
! FIXME: Several of these shouldn't necessarily be rendered separately
! when passing to GCC... Hopefully their driver handles this.
!
! CHECK: "-Aquestion=answer"
! CHECK: "-A-question=answer"
! CHECK: "-C"
! CHECK: "-CC"
! CHECK: "-D" "macro"
! CHECK: "-D" "macro=value"
! CHECK: "-H"
! CHECK: "-I" "some/directory"
! CHECK: "-Jsome/other/directory"
! CHECK: "-P"
! CHECK: "-U" "macro"
! CHECK: "-Waliasing"
! CHECK: "-Walign-commons"
! CHECK: "-Wall"
! CHECK: "-Wampersand"
! CHECK: "-Warray-bounds"
! CHECK: "-Wc-binding-type"
! CHECK: "-Wcharacter-truncation"
! CHECK: "-Wconversion"
! CHECK: "-Wfunction-elimination"
! CHECK: "-Wimplicit-interface"
! CHECK: "-Wimplicit-procedure"
! CHECK: "-Wintrinsic-shadow"
! CHECK: "-Wintrinsics-std"
! CHECK: "-Wline-truncation"
! CHECK: "-Wreal-q-constant"
! CHECK: "-Wrealloc-lhs"
! CHECK: "-Wsurprising"
! CHECK: "-Wtabs"
! CHECK: "-Wtarget-lifetime"
! CHECK: "-Wunderflow"
! CHECK: "-Wunused-parameter"
! CHECK: "-cpp"
! CHECK: "-dD"
! CHECK: "-dI"
! CHECK: "-dM"
! CHECK: "-dN"
! CHECK: "-dU"
! CHECK: "-faggressive-function-elimination"
! CHECK: "-falign-commons"
! CHECK: "-fall-intrinsics"
! CHECK: "-fautomatic"
! CHECK: "-fbackslash"
! CHECK: "-fbacktrace"
! CHECK: "-fblas-matmul-limit=42"
! CHECK: "-fbounds-check"
! CHECK: "-fcheck-array-temporaries"
! CHECK: "-fcheck=all"
! CHECK: "-fcoarray=none"
! CHECK: "-fconvert=foobar"
! CHECK: "-fcray-pointer"
! CHECK: "-fd-lines-as-code"
! CHECK: "-fd-lines-as-comments"
! CHECK: "-fdefault-double-8"
! CHECK: "-fdefault-integer-8"
! CHECK: "-fdefault-real-8"
! CHECK: "-fdollar-ok"
! CHECK: "-fdump-fortran-optimized"
! CHECK: "-fdump-fortran-original"
! CHECK: "-fdump-parse-tree"
! CHECK: "-fexternal-blas"
! CHECK: "-ff2c"
! CHECK: "-ffixed-form"
! CHECK: "-ffixed-line-length-42"
! CHECK: "-ffpe-trap=list"
! CHECK: "-ffree-form"
! CHECK: "-ffree-line-length-42"
! CHECK: "-ffrontend-optimize"
! CHECK: "-fimplicit-none"
! CHECK: "-finit-character=n"
! CHECK: "-finit-integer=n"
! CHECK: "-finit-local-zero"
! CHECK: "-finit-logical=false"
! CHECK: "-finit-real=zero"
! CHECK: "-finteger-4-integer-8"
! CHECK: "-fintrinsic-modules-path"
! CHECK: "-fmax-array-constructor=42"
! CHECK: "-fmax-errors=42"
! CHECK: "-fmax-identifier-length"
! CHECK: "-fmax-stack-var-size=42"
! CHECK: "-fmax-subrecord-length=42"
! CHECK: "-fmodule-private"
! CHECK: "-fopenmp"
! CHECK: "-fpack-derived"
! CHECK: "-fprotect-parens"
! CHECK: "-frange-check"
! CHECK: "-freal-4-real-10"
! CHECK: "-freal-4-real-16"
! CHECK: "-freal-4-real-8"
! CHECK: "-freal-8-real-10"
! CHECK: "-freal-8-real-16"
! CHECK: "-freal-8-real-4"
! CHECK: "-frealloc-lhs"
! CHECK: "-frecord-marker=42"
! CHECK: "-frecursive"
! CHECK: "-frepack-arrays"
! CHECK: "-fsecond-underscore"
! CHECK: "-fshort-enums"
! CHECK: "-fsign-zero"
! CHECK: "-fstack-arrays"
! CHECK: "-funderscoring"
! CHECK: "-fwhole-file"
! CHECK: "-imultilib"
! CHECK: "-iprefix"
! CHECK: "-iquote"
! CHECK: "-isysroot"
! CHECK: "-isystem"
! CHECK: "-nocpp"
! CHECK: "-nostdinc"
! CHECK: "-pedantic"
! CHECK: "-pedantic-errors"
! CHECK: "-static-libgfortran"
! CHECK: "-std=f90"
! CHECK: "-undef"
!
! Clang understands this one and orders it weirdly.
! CHECK: "-fsyntax-only"
!
! PR22234: Ensure that -fsyntax-only doesn't complain about output types and
! passes along correctly.
! RUN: %clang -no-canonical-prefixes -target i386-linux -fsyntax-only -### %s -o %t 2>&1 | \
! grep for error message and command-line
! RUN: grep -e error: -e -fsyntax-only | FileCheck %s --check-prefix=CHECK-PR22234
!
! CHECK-PR22234-NOT: clang: error: invalid output type
! CHECK-PR22234: "-fsyntax-only"
!
! Regression test for the bug introduced with PR22234 fix.
! Make sure -fsyntax-only is not passed to gfortran during normal compilation.
!
! RUN: %clang -no-canonical-prefixes -target i386-linux -### %s -o %t 2>&1 \
! RUN: | FileCheck %s --check-prefix=CHECK-PR22234-R
! CHECK-PR22234-R-NOT: "-fsyntax-only"