[PATCH] D96777: [clang][driver] Set the input type to Fortran when reading from stdin

2021-02-25 Thread Andrzej Warzynski via Phabricator via cfe-commits
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 ` (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


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 ` (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
 
 !---
 ! 

[PATCH] D96777: [clang][driver] Set the input type to Fortran when reading from stdin

2021-02-22 Thread Hans Wennborg via Phabricator via cfe-commits
hans added a comment.

In D96777#2578473 , @awarzynski wrote:

> In D96777#2578153 , @SouraVX wrote:
>
>> Thanks! for the patch.
>> This code touches some of the `clang` part, Anyway changes are pretty 
>> self-explanatory. I'll leave this one to you, if you want land it or wait 
>> from someone from `clang` community to take a look :)
>
> Thank you for reviewing!
>
> Git history tells me that @hans touched this bit most recently - in 2014 :) 
> Added as a reviewer - I will wait another day or two before merging.

I don't remember what I did here in 2014, but this looks reasonable to me.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96777/new/

https://reviews.llvm.org/D96777

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D96777: [clang][driver] Set the input type to Fortran when reading from stdin

2021-02-22 Thread Andrzej Warzynski via Phabricator via cfe-commits
awarzynski added a subscriber: hans.
awarzynski added a comment.

In D96777#2578153 , @SouraVX wrote:

> Thanks! for the patch.
> This code touches some of the `clang` part, Anyway changes are pretty 
> self-explanatory. I'll leave this one to you, if you want land it or wait 
> from someone from `clang` community to take a look :)

Thank you for reviewing!

Git history tells me that @hans touched this bit most recently - in 2014 :) 
Added as a reviewer - I will wait another day or two before merging.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96777/new/

https://reviews.llvm.org/D96777

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D96777: [clang][driver] Set the input type to Fortran when reading from stdin

2021-02-21 Thread Sourabh Singh Tomar via Phabricator via cfe-commits
SouraVX accepted this revision.
SouraVX added a comment.
This revision is now accepted and ready to land.

Thanks! for the patch.
This code touches some of the `clang` part, Anyway changes are pretty 
self-explanatory. I'll leave this one to you, if you want land it or wait from 
someone from `clang` community to take a look :)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96777/new/

https://reviews.llvm.org/D96777

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D96777: [clang][driver] Set the input type to Fortran when reading from stdin

2021-02-16 Thread Andrzej Warzynski via Phabricator via cfe-commits
awarzynski created this revision.
Herald added subscribers: usaxena95, kadircet.
Herald added a reviewer: sscalpone.
awarzynski requested review of this revision.
Herald added subscribers: cfe-commits, ilya-biryukov.
Herald added a project: clang.

This patch makes sure that for the following invocation of the new Flang
driver, clangDriver sets the input type to Fortran:

  flang-new -E -

This change does not affect `clang`, i.e. for the following invocation
the input type is set to C:

  clang -E -

This change leverages the fact that for `flang-new` the driver is in
Flang mode.


Repository:
  rG LLVM Github Monorepo

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 ` (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
@@ -2192,15 +2192,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


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 ` (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