mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-26 06:48:51 -04:00

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
259 lines
7.3 KiB
Fortran
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"
|