We have seen the llvm test fail every so often on our bots: https://lab.llvm.org/buildbot/#/builders/173/builds/6711 This happens because `flang-new -fc1 -S` does not wait for the pipe to finish being written to/does not read out all the content. You can see this in the output, cat comes after flang: + /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/not /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/flang-new -fc1 -S - -o - + cat /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Driver/input-from-stdin-llvm.ll error: Invalid input type - expecting a Fortran file This means that cat gets SIGPIPE which causes it to exit with code 141 and that's the final result due to pipefail. flang isn't wrong to exit early (I think some modes of grep also do this) and we only care about flang's exit code. So disable pipefail for the stdin testing. Reviewed By: awarzynski Differential Revision: https://reviews.llvm.org/D130619
42 lines
1.6 KiB
Fortran
42 lines
1.6 KiB
Fortran
! Verify that reading from stdin works as expected - Fortran input
|
|
|
|
!--------------------------
|
|
! FLANG DRIVER (flang)
|
|
!--------------------------
|
|
! Input type is implicit
|
|
! RUN: cat %s | %flang -E -cpp - | FileCheck %s --check-prefix=PP-NOT-DEFINED
|
|
! RUN: cat %s | %flang -DNEW -E -cpp - | FileCheck %s --check-prefix=PP-DEFINED
|
|
! RUN: cat %s | %flang -DNEW -E - | FileCheck %s --check-prefix=PP-NOT-DEFINED
|
|
! RUN: cat %s | %flang -DNEW -E -nocpp - | FileCheck %s --check-prefix=PP-NOT-DEFINED
|
|
|
|
! Input type is explicit
|
|
! RUN: cat %s | %flang -E -cpp -x f95-cpp-input - | FileCheck %s --check-prefix=PP-NOT-DEFINED
|
|
! RUN: cat %s | %flang -DNEW -E -cpp -x f95-cpp-input - | FileCheck %s --check-prefix=PP-DEFINED
|
|
|
|
!---------------------------------------
|
|
! FLANG FRONTEND DRIVER (flang -fc1)
|
|
!---------------------------------------
|
|
! Test `-E`: for the corresponding frontend actions the driver relies on the prescanner API to handle file I/O
|
|
! RUN: cat %s | %flang -fc1 -E -cpp | FileCheck %s --check-prefix=PP-NOT-DEFINED
|
|
! RUN: cat %s | %flang -fc1 -DNEW -E -cpp | FileCheck %s --check-prefix=PP-DEFINED
|
|
|
|
! Test `-test-io`: for the corresponding frontend action (`InputOutputTestAction`) the driver handles the file I/O on its own
|
|
! the corresponding action (`PrintPreprocessedAction`)
|
|
! RUN: cat %s | %flang -fc1 -test-io -cpp | FileCheck %s --check-prefix=IO --match-full-lines
|
|
! RUN: cat %s | %flang -fc1 -DNEW -cpp -test-io | FileCheck %s --check-prefix=IO --match-full-lines
|
|
|
|
! PP-NOT-DEFINED: Program B
|
|
! PP-DEFINED: Program A
|
|
|
|
! IO: #ifdef NEW
|
|
! IO-NEXT: Program A
|
|
! IO-NEXT: #else
|
|
! IO-NEXT: Program B
|
|
! IO-NEXT: #endif
|
|
|
|
#ifdef NEW
|
|
Program A
|
|
#else
|
|
Program B
|
|
#endif
|