[PATCH] D96777: [clang][driver] Set the input type to Fortran when reading from stdin
Andrzej Warzynski via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 25 05:14:22 PST 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rGbaebc1162f81: [clang][driver] Set the input type to Fortran when reading from stdin (authored by awarzynski).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D96777/new/
https://reviews.llvm.org/D96777
Files:
clang/lib/Driver/Driver.cpp
flang/test/Flang-Driver/input-from-stdin.f90
Index: flang/test/Flang-Driver/input-from-stdin.f90
===================================================================
--- flang/test/Flang-Driver/input-from-stdin.f90
+++ flang/test/Flang-Driver/input-from-stdin.f90
@@ -5,19 +5,22 @@
!--------------------------
! FLANG DRIVER (flang-new)
!--------------------------
-! TODO: Add support for `flang-new -`
-! Currently `bin/flang-new -E -` defaults to `-x c` and e.g. F90 is not allowed
-! in `-x <input-type>` (see `clang::driver::types::canTypeBeUserSpecified` in
-! Types.cpp)
+! Input type is implicit
+! RUN: cat %s | flang-new -E - | FileCheck %s --check-prefix=PP-NOT-DEFINED
+! RUN: cat %s | flang-new -DNEW -E - | FileCheck %s --check-prefix=PP-DEFINED
+
+! Input type is explicit
+! RUN: cat %s | flang-new -E -x f95-cpp-input - | FileCheck %s --check-prefix=PP-NOT-DEFINED
+! RUN: cat %s | flang-new -DNEW -E -x f95-cpp-input - | FileCheck %s --check-prefix=PP-DEFINED
!---------------------------------------
! FLANG FRONTEND DRIVER (flang-new -fc1)
!---------------------------------------
-! Test `-E` - for the corresponding frontend actions the driver relies on the prescanner API to handle file I/O
+! Test `-E`: for the corresponding frontend actions the driver relies on the prescanner API to handle file I/O
! RUN: cat %s | flang-new -fc1 -E | FileCheck %s --check-prefix=PP-NOT-DEFINED
! RUN: cat %s | flang-new -fc1 -DNEW -E | 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
+! 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-new -fc1 -test-io | FileCheck %s --check-prefix=IO --match-full-lines
! RUN: cat %s | flang-new -fc1 -DNEW -test-io | FileCheck %s --check-prefix=IO --match-full-lines
Index: clang/lib/Driver/Driver.cpp
===================================================================
--- clang/lib/Driver/Driver.cpp
+++ clang/lib/Driver/Driver.cpp
@@ -2191,15 +2191,20 @@
// stdin must be handled specially.
if (memcmp(Value, "-", 2) == 0) {
- // If running with -E, treat as a C input (this changes the builtin
- // macros, for example). This may be overridden by -ObjC below.
- //
- // Otherwise emit an error but still use a valid type to avoid
- // spurious errors (e.g., no inputs).
- if (!Args.hasArgNoClaim(options::OPT_E) && !CCCIsCPP())
- Diag(IsCLMode() ? clang::diag::err_drv_unknown_stdin_type_clang_cl
- : clang::diag::err_drv_unknown_stdin_type);
- Ty = types::TY_C;
+ if (IsFlangMode()) {
+ Ty = types::TY_Fortran;
+ } else {
+ // If running with -E, treat as a C input (this changes the
+ // builtin macros, for example). This may be overridden by -ObjC
+ // below.
+ //
+ // Otherwise emit an error but still use a valid type to avoid
+ // spurious errors (e.g., no inputs).
+ if (!Args.hasArgNoClaim(options::OPT_E) && !CCCIsCPP())
+ Diag(IsCLMode() ? clang::diag::err_drv_unknown_stdin_type_clang_cl
+ : clang::diag::err_drv_unknown_stdin_type);
+ Ty = types::TY_C;
+ }
} else {
// Otherwise lookup by extension.
// Fallback is C if invoked as C preprocessor, C++ if invoked with
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D96777.326364.patch
Type: text/x-patch
Size: 3594 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210225/ffe69561/attachment.bin>
More information about the cfe-commits
mailing list