[clang] 1360bfb - [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names

2023-02-21 Thread Mark Danial via cfe-commits

Author: Mark Danial
Date: 2023-02-21T16:34:26-05:00
New Revision: 1360bfb05b3153ad93a7e866f0ac6860d94337a2

URL: 
https://github.com/llvm/llvm-project/commit/1360bfb05b3153ad93a7e866f0ac6860d94337a2
DIFF: 
https://github.com/llvm/llvm-project/commit/1360bfb05b3153ad93a7e866f0ac6860d94337a2.diff

LOG: [Flang] Add user option -funderscoring/-fnounderscoring to control 
trailing underscore added to external names

This patch adds user option -funderscoring/-fnounderscoring  to control the 
trailing underscore being appended to external names (e.g. procedure names, 
common block names). The option in gfortran is documented in 
https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html.

Reviewed By: clementval

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

Added: 
flang/test/Driver/underscoring.f90

Modified: 
clang/include/clang/Driver/Options.td
clang/lib/Driver/ToolChains/Flang.cpp
flang/include/flang/Frontend/CodeGenOptions.def
flang/include/flang/Optimizer/Transforms/Passes.h
flang/include/flang/Optimizer/Transforms/Passes.td
flang/include/flang/Tools/CLOptions.inc
flang/lib/Frontend/CompilerInvocation.cpp
flang/lib/Frontend/FrontendActions.cpp
flang/lib/Optimizer/Transforms/ExternalNameConversion.cpp
flang/test/Driver/driver-help-hidden.f90
flang/test/Driver/driver-help.f90
flang/test/Fir/external-mangling.fir

Removed: 




diff  --git a/clang/include/clang/Driver/Options.td 
b/clang/include/clang/Driver/Options.td
index f84522c741561..a26af0af2c946 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -5028,7 +5028,6 @@ defm recursive : BooleanFFlag<"recursive">, 
Group;
 defm repack_arrays : BooleanFFlag<"repack-arrays">, Group;
 defm second_underscore : BooleanFFlag<"second-underscore">, 
Group;
 defm sign_zero : BooleanFFlag<"sign-zero">, Group;
-defm underscoring : BooleanFFlag<"underscoring">, Group;
 defm whole_file : BooleanFFlag<"whole-file">, Group;
 
 // C++ SYCL options
@@ -5103,6 +5102,7 @@ defm backslash : OptInFC1FFlag<"backslash", "Specify that 
backslash in string in
 defm xor_operator : OptInFC1FFlag<"xor-operator", "Enable .XOR. as a synonym 
of .NEQV.">;
 defm logical_abbreviations : OptInFC1FFlag<"logical-abbreviations", "Enable 
logical abbreviations">;
 defm implicit_none : OptInFC1FFlag<"implicit-none", "No implicit typing 
allowed unless overridden by IMPLICIT statements">;
+defm underscoring : OptInFC1FFlag<"underscoring", "Appends one trailing 
underscore to external names">;
 
 def fno_automatic : Flag<["-"], "fno-automatic">, Group,
   HelpText<"Implies the SAVE attribute for non-automatic local objects in 
subprograms unless RECURSIVE">;

diff  --git a/clang/lib/Driver/ToolChains/Flang.cpp 
b/clang/lib/Driver/ToolChains/Flang.cpp
index 8d9fae58ce50e..cd3907c099481 100644
--- a/clang/lib/Driver/ToolChains/Flang.cpp
+++ b/clang/lib/Driver/ToolChains/Flang.cpp
@@ -56,7 +56,8 @@ void Flang::addOtherOptions(const ArgList &Args, 
ArgStringList &CmdArgs) const {
   {options::OPT_module_dir, options::OPT_fdebug_module_writer,
options::OPT_fintrinsic_modules_path, options::OPT_pedantic,
options::OPT_std_EQ, options::OPT_W_Joined,
-   options::OPT_fconvert_EQ, options::OPT_fpass_plugin_EQ});
+   options::OPT_fconvert_EQ, options::OPT_fpass_plugin_EQ,
+   options::OPT_funderscoring, options::OPT_fno_underscoring});
 
   Arg *stackArrays =
   Args.getLastArg(options::OPT_Ofast, options::OPT_fstack_arrays,

diff  --git a/flang/include/flang/Frontend/CodeGenOptions.def 
b/flang/include/flang/Frontend/CodeGenOptions.def
index 0de2360fd95be..7f50442af6d09 100644
--- a/flang/include/flang/Frontend/CodeGenOptions.def
+++ b/flang/include/flang/Frontend/CodeGenOptions.def
@@ -28,6 +28,7 @@ CODEGENOPT(PICLevel, 2, 0) ///< PIC level of the LLVM module.
 CODEGENOPT(IsPIE, 1, 0) ///< PIE level is the same as PIC Level.
 CODEGENOPT(StackArrays, 1, 0) ///< -fstack-arrays (enable the stack-arrays 
pass)
 
+CODEGENOPT(Underscoring, 1, 1)
 ENUM_CODEGENOPT(RelocationModel, llvm::Reloc::Model, 3, llvm::Reloc::PIC_) 
///< Name of the relocation model to use.
 
 #undef CODEGENOPT

diff  --git a/flang/include/flang/Optimizer/Transforms/Passes.h 
b/flang/include/flang/Optimizer/Transforms/Passes.h
index efe55cecce30b..55f000f067b52 100644
--- a/flang/include/flang/Optimizer/Transforms/Passes.h
+++ b/flang/include/flang/Optimizer/Transforms/Passes.h
@@ -52,6 +52,8 @@ createArrayValueCopyPass(fir::ArrayValueCopyOptions options = 
{});
 std::unique_ptr createFirToCfgPass();
 std::unique_ptr createCharacterConversionPass();
 std::unique_ptr createExternalNameConversionPass();
+std::unique_ptr
+createExternalNameConversionPass(bool appendUnderscore);
 std::unique_ptr createMemDataFlowOptPass();
 std::unique_ptr crea

[clang] [AIX] fix unsupported diff flag on AIX (-strip-trailing-cr) (PR #120276)

2024-12-17 Thread Mark Danial via cfe-commits

https://github.com/madanial0 closed 
https://github.com/llvm/llvm-project/pull/120276
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [AIX] fix unsupported diff flag on AIX (-strip-trailing-cr) (PR #120276)

2024-12-17 Thread Mark Danial via cfe-commits

https://github.com/madanial0 created 
https://github.com/llvm/llvm-project/pull/120276

https://github.com/llvm/llvm-project/pull/119666 adds the `-strip-trailing-cr` 
flag to diff which is not supported on AIX switch to use the python 
implementation of diff instead

>From 1fb12758908b0cfeb8ff738c8c8f6378d6fbf8ea Mon Sep 17 00:00:00 2001
From: Mark Danial 
Date: Tue, 17 Dec 2024 12:47:20 -0500
Subject: [PATCH] fix unsupported diff flag on AIX (-strip-trailing-cr)

---
 clang/test/Format/lit.local.cfg | 8 
 1 file changed, 8 insertions(+)

diff --git a/clang/test/Format/lit.local.cfg b/clang/test/Format/lit.local.cfg
index 8acf02725d701b..b060c79226cbda 100644
--- a/clang/test/Format/lit.local.cfg
+++ b/clang/test/Format/lit.local.cfg
@@ -1,3 +1,6 @@
+import platform
+import lit.formats
+
 # Suffixes supported by clang-format.
 config.suffixes = [
 ".c",
@@ -19,3 +22,8 @@ config.suffixes = [
 ".td",
 ".test"
 ]
+
+# AIX 'diff' command doesn't support --strip-trailing-cr, but the internal
+# python implementation does, so use that for cross platform compatibility
+if platform.system() == "AIX":
+config.test_format = lit.formats.ShTest()

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