[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
madanial added a comment. Thanks for the review. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
This revision was automatically updated to reflect the committed changes. Closed by commit rG1360bfb05b31: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing… (authored by madanial). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 Files: 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/Driver/underscoring.f90 flang/test/Fir/external-mangling.fir Index: flang/test/Fir/external-mangling.fir === --- flang/test/Fir/external-mangling.fir +++ flang/test/Fir/external-mangling.fir @@ -1,6 +1,9 @@ -// RUN: fir-opt --external-name-interop %s | FileCheck %s -// RUN: tco --external-name-interop %s | FileCheck %s -// RUN: tco --external-name-interop %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR +// RUN: fir-opt --external-name-interop="append-underscore=true" %s | FileCheck %s --check-prefix=CHECK-UNDER +// RUN: fir-opt --external-name-interop="append-underscore=false" %s | FileCheck %s --check-prefix=CHECK-NOUNDER +// RUN: tco --external-name-interop="append-underscore=true" %s | FileCheck %s --check-prefix=CHECK-UNDER +// RUN: tco --external-name-interop="append-underscore=false" %s | FileCheck %s --check-prefix=CHECK-NOUNDER +// RUN: tco --external-name-interop="append-underscore=true" %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR-UNDER +// RUN: tco --external-name-interop="append-underscore=false" %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR-NOUNDER func.func @_QPfoo() { %c0 = arith.constant 0 : index @@ -21,24 +24,43 @@ func.func private @_QPbar(!fir.ref) func.func private @_QPbar2(!fir.ref) -// CHECK: func @foo_ -// CHECK: %{{.*}} = fir.address_of(@a_) : !fir.ref> -// CHECK: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> -// CHECK: fir.call @bar_ -// CHECK: fir.call @bar2_ -// CHECK: fir.global common @a_(dense<0> : vector<4xi8>) : !fir.array<4xi8> -// CHECK: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> -// CHECK: func private @bar_(!fir.ref) - -// LLVMIR: %{{.*}} = llvm.mlir.addressof @a_ : !llvm.ptr> -// LLVMIR: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> -// LLVMIR: llvm.call @bar_(%{{.*}}) : (!llvm.ptr) -> () -// LLVMIR: llvm.call @bar2_(%{{.*}}) : (!llvm.ptr) -> () - -// LLVMIR: llvm.mlir.global common @a_(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> -// LLVMIR: llvm.mlir.global common @__BLNK__(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> -// LLVMIR: llvm.func @bar_(!llvm.ptr) attributes {sym_visibility = "private"} -// LLVMIR: llvm.func @bar2_(!llvm.ptr) attributes {sym_visibility = "private"} +// CHECK-UNDER: func @foo_ +// CHECK-UNDER: %{{.*}} = fir.address_of(@a_) : !fir.ref> +// CHECK-UNDER: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> +// CHECK-UNDER: fir.call @bar_ +// CHECK-UNDER: fir.call @bar2_ +// CHECK-UNDER: fir.global common @a_(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-UNDER: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-UNDER: func private @bar_(!fir.ref) + +// CHECK-NOUNDER: func @foo( +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@a) : !fir.ref> +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> +// CHECK-NOUNDER: fir.call @bar( +// CHECK-NOUNDER: fir.call @bar2( +// CHECK-NOUNDER: fir.global common @a(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-NOUNDER: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-NOUNDER: func private @bar(!fir.ref) + +// LLVMIR-UNDER: %{{.*}} = llvm.mlir.addressof @a_ : !llvm.ptr> +// LLVMIR-UNDER: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> +// LLVMIR-UNDER: llvm.call @bar_(%{{.*}}) : (!llvm.ptr) -> () +// LLVMIR-UNDER: llvm.call @bar2_(%{{.*}}) : (!llvm.ptr) -> () + +// LLVMIR-UNDER: llvm.mlir.global common @a_(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +// LLVMIR-UNDER: llvm.mlir.global common @__BLNK__(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +// LLVMIR-UNDER: llvm.func @bar_(!llvm.ptr) attributes {sym_visibility = "private"} +// LLVMIR-UNDER: llvm.func @bar2_(!llvm.ptr) attributes {sym_visibility = "private"} + +// LLVMIR-NOUNDER: %{{.*}} = llvm.mlir.addressof @a : !llvm.ptr> +// LLVMIR-NOUNDER: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> +// LLVMIR-NOUNDER: llvm.call @bar(%{{.*}}) : (!llvm.ptr) -> () +// LLVMIR-NOUNDER: llvm.call @bar2(%{{.*}}) :
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
clementval accepted this revision. clementval added a comment. This revision is now accepted and ready to land. LGTM. Thanks for working on this. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
madanial updated this revision to Diff 497931. madanial added a comment. addressing style mismatch in > flang/include/flang/Tools/CLOptions.inc CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 Files: 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/Driver/underscoring.f90 flang/test/Fir/external-mangling.fir Index: flang/test/Fir/external-mangling.fir === --- flang/test/Fir/external-mangling.fir +++ flang/test/Fir/external-mangling.fir @@ -1,6 +1,9 @@ -// RUN: fir-opt --external-name-interop %s | FileCheck %s -// RUN: tco --external-name-interop %s | FileCheck %s -// RUN: tco --external-name-interop %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR +// RUN: fir-opt --external-name-interop="append-underscore=true" %s | FileCheck %s --check-prefix=CHECK-UNDER +// RUN: fir-opt --external-name-interop="append-underscore=false" %s | FileCheck %s --check-prefix=CHECK-NOUNDER +// RUN: tco --external-name-interop="append-underscore=true" %s | FileCheck %s --check-prefix=CHECK-UNDER +// RUN: tco --external-name-interop="append-underscore=false" %s | FileCheck %s --check-prefix=CHECK-NOUNDER +// RUN: tco --external-name-interop="append-underscore=true" %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR-UNDER +// RUN: tco --external-name-interop="append-underscore=false" %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR-NOUNDER func.func @_QPfoo() { %c0 = arith.constant 0 : index @@ -21,24 +24,43 @@ func.func private @_QPbar(!fir.ref) func.func private @_QPbar2(!fir.ref) -// CHECK: func @foo_ -// CHECK: %{{.*}} = fir.address_of(@a_) : !fir.ref> -// CHECK: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> -// CHECK: fir.call @bar_ -// CHECK: fir.call @bar2_ -// CHECK: fir.global common @a_(dense<0> : vector<4xi8>) : !fir.array<4xi8> -// CHECK: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> -// CHECK: func private @bar_(!fir.ref) - -// LLVMIR: %{{.*}} = llvm.mlir.addressof @a_ : !llvm.ptr> -// LLVMIR: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> -// LLVMIR: llvm.call @bar_(%{{.*}}) : (!llvm.ptr) -> () -// LLVMIR: llvm.call @bar2_(%{{.*}}) : (!llvm.ptr) -> () - -// LLVMIR: llvm.mlir.global common @a_(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> -// LLVMIR: llvm.mlir.global common @__BLNK__(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> -// LLVMIR: llvm.func @bar_(!llvm.ptr) attributes {sym_visibility = "private"} -// LLVMIR: llvm.func @bar2_(!llvm.ptr) attributes {sym_visibility = "private"} +// CHECK-UNDER: func @foo_ +// CHECK-UNDER: %{{.*}} = fir.address_of(@a_) : !fir.ref> +// CHECK-UNDER: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> +// CHECK-UNDER: fir.call @bar_ +// CHECK-UNDER: fir.call @bar2_ +// CHECK-UNDER: fir.global common @a_(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-UNDER: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-UNDER: func private @bar_(!fir.ref) + +// CHECK-NOUNDER: func @foo( +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@a) : !fir.ref> +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> +// CHECK-NOUNDER: fir.call @bar( +// CHECK-NOUNDER: fir.call @bar2( +// CHECK-NOUNDER: fir.global common @a(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-NOUNDER: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-NOUNDER: func private @bar(!fir.ref) + +// LLVMIR-UNDER: %{{.*}} = llvm.mlir.addressof @a_ : !llvm.ptr> +// LLVMIR-UNDER: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> +// LLVMIR-UNDER: llvm.call @bar_(%{{.*}}) : (!llvm.ptr) -> () +// LLVMIR-UNDER: llvm.call @bar2_(%{{.*}}) : (!llvm.ptr) -> () + +// LLVMIR-UNDER: llvm.mlir.global common @a_(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +// LLVMIR-UNDER: llvm.mlir.global common @__BLNK__(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +// LLVMIR-UNDER: llvm.func @bar_(!llvm.ptr) attributes {sym_visibility = "private"} +// LLVMIR-UNDER: llvm.func @bar2_(!llvm.ptr) attributes {sym_visibility = "private"} + +// LLVMIR-NOUNDER: %{{.*}} = llvm.mlir.addressof @a : !llvm.ptr> +// LLVMIR-NOUNDER: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> +// LLVMIR-NOUNDER: llvm.call @bar(%{{.*}}) : (!llvm.ptr) -> () +// LLVMIR-NOUNDER: llvm.call @bar2(%{{.*}}) : (!llvm.ptr) -> () + +// LLVMIR-NOUNDER: llvm.mlir.global common @a(dense<0> : vector<4xi8>) {{.*}} :
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
clementval added a comment. You still have style mismatch in `flang/include/flang/Tools/CLOptions.inc`. This file is likely not run through clang-format so that's why. Comment at: flang/include/flang/Tools/CLOptions.inc:214 +llvm::OptimizationLevel optLevel = defaultOptLevel, +bool Underscoring = true) { fir::addBoxedProcedurePass(pm); Comment at: flang/include/flang/Tools/CLOptions.inc:233 llvm::OptimizationLevel optLevel = defaultOptLevel, -bool stackArrays = false) { +bool stackArrays = false, bool Underscoring = true) { // Add default optimizer pass pipeline. Comment at: flang/include/flang/Tools/CLOptions.inc:238 // Add codegen pass pipeline. - fir::createDefaultFIRCodeGenPassPipeline(pm, optLevel); + fir::createDefaultFIRCodeGenPassPipeline(pm, optLevel, Underscoring); } CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
madanial updated this revision to Diff 497928. madanial added a comment. Bug Fix for failing test cases CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 Files: 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/Driver/underscoring.f90 flang/test/Fir/external-mangling.fir Index: flang/test/Fir/external-mangling.fir === --- flang/test/Fir/external-mangling.fir +++ flang/test/Fir/external-mangling.fir @@ -1,6 +1,9 @@ -// RUN: fir-opt --external-name-interop %s | FileCheck %s -// RUN: tco --external-name-interop %s | FileCheck %s -// RUN: tco --external-name-interop %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR +// RUN: fir-opt --external-name-interop="append-underscore=true" %s | FileCheck %s --check-prefix=CHECK-UNDER +// RUN: fir-opt --external-name-interop="append-underscore=false" %s | FileCheck %s --check-prefix=CHECK-NOUNDER +// RUN: tco --external-name-interop="append-underscore=true" %s | FileCheck %s --check-prefix=CHECK-UNDER +// RUN: tco --external-name-interop="append-underscore=false" %s | FileCheck %s --check-prefix=CHECK-NOUNDER +// RUN: tco --external-name-interop="append-underscore=true" %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR-UNDER +// RUN: tco --external-name-interop="append-underscore=false" %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR-NOUNDER func.func @_QPfoo() { %c0 = arith.constant 0 : index @@ -21,24 +24,43 @@ func.func private @_QPbar(!fir.ref) func.func private @_QPbar2(!fir.ref) -// CHECK: func @foo_ -// CHECK: %{{.*}} = fir.address_of(@a_) : !fir.ref> -// CHECK: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> -// CHECK: fir.call @bar_ -// CHECK: fir.call @bar2_ -// CHECK: fir.global common @a_(dense<0> : vector<4xi8>) : !fir.array<4xi8> -// CHECK: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> -// CHECK: func private @bar_(!fir.ref) - -// LLVMIR: %{{.*}} = llvm.mlir.addressof @a_ : !llvm.ptr> -// LLVMIR: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> -// LLVMIR: llvm.call @bar_(%{{.*}}) : (!llvm.ptr) -> () -// LLVMIR: llvm.call @bar2_(%{{.*}}) : (!llvm.ptr) -> () - -// LLVMIR: llvm.mlir.global common @a_(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> -// LLVMIR: llvm.mlir.global common @__BLNK__(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> -// LLVMIR: llvm.func @bar_(!llvm.ptr) attributes {sym_visibility = "private"} -// LLVMIR: llvm.func @bar2_(!llvm.ptr) attributes {sym_visibility = "private"} +// CHECK-UNDER: func @foo_ +// CHECK-UNDER: %{{.*}} = fir.address_of(@a_) : !fir.ref> +// CHECK-UNDER: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> +// CHECK-UNDER: fir.call @bar_ +// CHECK-UNDER: fir.call @bar2_ +// CHECK-UNDER: fir.global common @a_(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-UNDER: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-UNDER: func private @bar_(!fir.ref) + +// CHECK-NOUNDER: func @foo( +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@a) : !fir.ref> +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> +// CHECK-NOUNDER: fir.call @bar( +// CHECK-NOUNDER: fir.call @bar2( +// CHECK-NOUNDER: fir.global common @a(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-NOUNDER: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-NOUNDER: func private @bar(!fir.ref) + +// LLVMIR-UNDER: %{{.*}} = llvm.mlir.addressof @a_ : !llvm.ptr> +// LLVMIR-UNDER: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> +// LLVMIR-UNDER: llvm.call @bar_(%{{.*}}) : (!llvm.ptr) -> () +// LLVMIR-UNDER: llvm.call @bar2_(%{{.*}}) : (!llvm.ptr) -> () + +// LLVMIR-UNDER: llvm.mlir.global common @a_(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +// LLVMIR-UNDER: llvm.mlir.global common @__BLNK__(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +// LLVMIR-UNDER: llvm.func @bar_(!llvm.ptr) attributes {sym_visibility = "private"} +// LLVMIR-UNDER: llvm.func @bar2_(!llvm.ptr) attributes {sym_visibility = "private"} + +// LLVMIR-NOUNDER: %{{.*}} = llvm.mlir.addressof @a : !llvm.ptr> +// LLVMIR-NOUNDER: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> +// LLVMIR-NOUNDER: llvm.call @bar(%{{.*}}) : (!llvm.ptr) -> () +// LLVMIR-NOUNDER: llvm.call @bar2(%{{.*}}) : (!llvm.ptr) -> () + +// LLVMIR-NOUNDER: llvm.mlir.global common @a(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +// LLVMIR-NOUNDER:
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
clementval added a comment. The pre-commit check is still failing with these tests: Flang :: Fir/alloc.fir Flang :: Fir/embox.fir Flang :: Fir/optional.fir Flang :: Fir/rebox.fir Flang :: Lower/common-block.f90 Flang :: Lower/forall/character-1.f90 CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
madanial updated this revision to Diff 497392. madanial added a comment. clang-format issue in ExternalNameConversion.cpp CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 Files: 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/Driver/underscoring.f90 flang/test/Fir/external-mangling.fir Index: flang/test/Fir/external-mangling.fir === --- flang/test/Fir/external-mangling.fir +++ flang/test/Fir/external-mangling.fir @@ -1,6 +1,9 @@ -// RUN: fir-opt --external-name-interop %s | FileCheck %s -// RUN: tco --external-name-interop %s | FileCheck %s -// RUN: tco --external-name-interop %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR +// RUN: fir-opt --external-name-interop="append-underscore=true" %s | FileCheck %s --check-prefix=CHECK-UNDER +// RUN: fir-opt --external-name-interop="append-underscore=false" %s | FileCheck %s --check-prefix=CHECK-NOUNDER +// RUN: tco --external-name-interop="append-underscore=true" %s | FileCheck %s --check-prefix=CHECK-UNDER +// RUN: tco --external-name-interop="append-underscore=false" %s | FileCheck %s --check-prefix=CHECK-NOUNDER +// RUN: tco --external-name-interop="append-underscore=true" %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR-UNDER +// RUN: tco --external-name-interop="append-underscore=false" %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR-NOUNDER func.func @_QPfoo() { %c0 = arith.constant 0 : index @@ -21,24 +24,43 @@ func.func private @_QPbar(!fir.ref) func.func private @_QPbar2(!fir.ref) -// CHECK: func @foo_ -// CHECK: %{{.*}} = fir.address_of(@a_) : !fir.ref> -// CHECK: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> -// CHECK: fir.call @bar_ -// CHECK: fir.call @bar2_ -// CHECK: fir.global common @a_(dense<0> : vector<4xi8>) : !fir.array<4xi8> -// CHECK: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> -// CHECK: func private @bar_(!fir.ref) - -// LLVMIR: %{{.*}} = llvm.mlir.addressof @a_ : !llvm.ptr> -// LLVMIR: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> -// LLVMIR: llvm.call @bar_(%{{.*}}) : (!llvm.ptr) -> () -// LLVMIR: llvm.call @bar2_(%{{.*}}) : (!llvm.ptr) -> () - -// LLVMIR: llvm.mlir.global common @a_(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> -// LLVMIR: llvm.mlir.global common @__BLNK__(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> -// LLVMIR: llvm.func @bar_(!llvm.ptr) attributes {sym_visibility = "private"} -// LLVMIR: llvm.func @bar2_(!llvm.ptr) attributes {sym_visibility = "private"} +// CHECK-UNDER: func @foo_ +// CHECK-UNDER: %{{.*}} = fir.address_of(@a_) : !fir.ref> +// CHECK-UNDER: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> +// CHECK-UNDER: fir.call @bar_ +// CHECK-UNDER: fir.call @bar2_ +// CHECK-UNDER: fir.global common @a_(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-UNDER: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-UNDER: func private @bar_(!fir.ref) + +// CHECK-NOUNDER: func @foo( +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@a) : !fir.ref> +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> +// CHECK-NOUNDER: fir.call @bar( +// CHECK-NOUNDER: fir.call @bar2( +// CHECK-NOUNDER: fir.global common @a(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-NOUNDER: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-NOUNDER: func private @bar(!fir.ref) + +// LLVMIR-UNDER: %{{.*}} = llvm.mlir.addressof @a_ : !llvm.ptr> +// LLVMIR-UNDER: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> +// LLVMIR-UNDER: llvm.call @bar_(%{{.*}}) : (!llvm.ptr) -> () +// LLVMIR-UNDER: llvm.call @bar2_(%{{.*}}) : (!llvm.ptr) -> () + +// LLVMIR-UNDER: llvm.mlir.global common @a_(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +// LLVMIR-UNDER: llvm.mlir.global common @__BLNK__(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +// LLVMIR-UNDER: llvm.func @bar_(!llvm.ptr) attributes {sym_visibility = "private"} +// LLVMIR-UNDER: llvm.func @bar2_(!llvm.ptr) attributes {sym_visibility = "private"} + +// LLVMIR-NOUNDER: %{{.*}} = llvm.mlir.addressof @a : !llvm.ptr> +// LLVMIR-NOUNDER: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> +// LLVMIR-NOUNDER: llvm.call @bar(%{{.*}}) : (!llvm.ptr) -> () +// LLVMIR-NOUNDER: llvm.call @bar2(%{{.*}}) : (!llvm.ptr) -> () + +// LLVMIR-NOUNDER: llvm.mlir.global common @a(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +//
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
clementval added a comment. You still have clang-format issues in your patch. Can you update that. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
madanial updated this revision to Diff 497024. madanial added a comment. Addressing the review comments relating to the test case. Thanks for the catch! CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 Files: 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/Driver/underscoring.f90 flang/test/Fir/external-mangling.fir Index: flang/test/Fir/external-mangling.fir === --- flang/test/Fir/external-mangling.fir +++ flang/test/Fir/external-mangling.fir @@ -1,6 +1,9 @@ -// RUN: fir-opt --external-name-interop %s | FileCheck %s -// RUN: tco --external-name-interop %s | FileCheck %s -// RUN: tco --external-name-interop %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR +// RUN: fir-opt --external-name-interop="append-underscore=true" %s | FileCheck %s --check-prefix=CHECK-UNDER +// RUN: fir-opt --external-name-interop="append-underscore=false" %s | FileCheck %s --check-prefix=CHECK-NOUNDER +// RUN: tco --external-name-interop="append-underscore=true" %s | FileCheck %s --check-prefix=CHECK-UNDER +// RUN: tco --external-name-interop="append-underscore=false" %s | FileCheck %s --check-prefix=CHECK-NOUNDER +// RUN: tco --external-name-interop="append-underscore=true" %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR-UNDER +// RUN: tco --external-name-interop="append-underscore=false" %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR-NOUNDER func.func @_QPfoo() { %c0 = arith.constant 0 : index @@ -21,24 +24,43 @@ func.func private @_QPbar(!fir.ref) func.func private @_QPbar2(!fir.ref) -// CHECK: func @foo_ -// CHECK: %{{.*}} = fir.address_of(@a_) : !fir.ref> -// CHECK: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> -// CHECK: fir.call @bar_ -// CHECK: fir.call @bar2_ -// CHECK: fir.global common @a_(dense<0> : vector<4xi8>) : !fir.array<4xi8> -// CHECK: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> -// CHECK: func private @bar_(!fir.ref) - -// LLVMIR: %{{.*}} = llvm.mlir.addressof @a_ : !llvm.ptr> -// LLVMIR: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> -// LLVMIR: llvm.call @bar_(%{{.*}}) : (!llvm.ptr) -> () -// LLVMIR: llvm.call @bar2_(%{{.*}}) : (!llvm.ptr) -> () - -// LLVMIR: llvm.mlir.global common @a_(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> -// LLVMIR: llvm.mlir.global common @__BLNK__(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> -// LLVMIR: llvm.func @bar_(!llvm.ptr) attributes {sym_visibility = "private"} -// LLVMIR: llvm.func @bar2_(!llvm.ptr) attributes {sym_visibility = "private"} +// CHECK-UNDER: func @foo_ +// CHECK-UNDER: %{{.*}} = fir.address_of(@a_) : !fir.ref> +// CHECK-UNDER: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> +// CHECK-UNDER: fir.call @bar_ +// CHECK-UNDER: fir.call @bar2_ +// CHECK-UNDER: fir.global common @a_(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-UNDER: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-UNDER: func private @bar_(!fir.ref) + +// CHECK-NOUNDER: func @foo( +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@a) : !fir.ref> +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> +// CHECK-NOUNDER: fir.call @bar( +// CHECK-NOUNDER: fir.call @bar2( +// CHECK-NOUNDER: fir.global common @a(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-NOUNDER: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-NOUNDER: func private @bar(!fir.ref) + +// LLVMIR-UNDER: %{{.*}} = llvm.mlir.addressof @a_ : !llvm.ptr> +// LLVMIR-UNDER: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> +// LLVMIR-UNDER: llvm.call @bar_(%{{.*}}) : (!llvm.ptr) -> () +// LLVMIR-UNDER: llvm.call @bar2_(%{{.*}}) : (!llvm.ptr) -> () + +// LLVMIR-UNDER: llvm.mlir.global common @a_(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +// LLVMIR-UNDER: llvm.mlir.global common @__BLNK__(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +// LLVMIR-UNDER: llvm.func @bar_(!llvm.ptr) attributes {sym_visibility = "private"} +// LLVMIR-UNDER: llvm.func @bar2_(!llvm.ptr) attributes {sym_visibility = "private"} + +// LLVMIR-NOUNDER: %{{.*}} = llvm.mlir.addressof @a : !llvm.ptr> +// LLVMIR-NOUNDER: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> +// LLVMIR-NOUNDER: llvm.call @bar(%{{.*}}) : (!llvm.ptr) -> () +// LLVMIR-NOUNDER: llvm.call @bar2(%{{.*}}) : (!llvm.ptr) -> () + +// LLVMIR-NOUNDER: llvm.mlir.global common @a(dense<0> : vector<4xi8>) {{.*}} :
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
clementval added inline comments. Comment at: flang/test/Fir/external-mangling.fir:36 + +// CHECK-NOUNDER: func @foo +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@a) : !fir.ref> You should check at least the character after it because here the check line would also succeed with an underscore. Comment at: flang/test/Fir/external-mangling.fir:39-40 +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> +// CHECK-NOUNDER: fir.call @bar +// CHECK-NOUNDER: fir.call @bar2 +// CHECK-NOUNDER: fir.global common @a(dense<0> : vector<4xi8>) : !fir.array<4xi8> Same here. Comment at: flang/test/Fir/external-mangling.fir:85-88 +// CHECK-NOUNDER: func @callee +// CHECK-NOUNDER: fir.call @callee +// CHECK-NOUNDER: func @caller +// CHECK-NOUNDER: fir.call @callee Same here. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
madanial updated this revision to Diff 496027. madanial added a comment. Rebase, as well as bug fix relating to the ExternalNameConversion pass option that was exposed by the requested fir-opt test case. The pass option was being overwritten by default value whenever it was called through fir-opt. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 Files: 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/Driver/underscoring.f90 flang/test/Fir/external-mangling.fir Index: flang/test/Fir/external-mangling.fir === --- flang/test/Fir/external-mangling.fir +++ flang/test/Fir/external-mangling.fir @@ -1,6 +1,9 @@ -// RUN: fir-opt --external-name-interop %s | FileCheck %s -// RUN: tco --external-name-interop %s | FileCheck %s -// RUN: tco --external-name-interop %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR +// RUN: fir-opt --external-name-interop="append-underscore=true" %s | FileCheck %s --check-prefix=CHECK-UNDER +// RUN: fir-opt --external-name-interop="append-underscore=false" %s | FileCheck %s --check-prefix=CHECK-NOUNDER +// RUN: tco --external-name-interop="append-underscore=true" %s | FileCheck %s --check-prefix=CHECK-UNDER +// RUN: tco --external-name-interop="append-underscore=false" %s | FileCheck %s --check-prefix=CHECK-NOUNDER +// RUN: tco --external-name-interop="append-underscore=true" %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR-UNDER +// RUN: tco --external-name-interop="append-underscore=false" %s | tco --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR-NOUNDER func.func @_QPfoo() { %c0 = arith.constant 0 : index @@ -21,24 +24,43 @@ func.func private @_QPbar(!fir.ref) func.func private @_QPbar2(!fir.ref) -// CHECK: func @foo_ -// CHECK: %{{.*}} = fir.address_of(@a_) : !fir.ref> -// CHECK: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> -// CHECK: fir.call @bar_ -// CHECK: fir.call @bar2_ -// CHECK: fir.global common @a_(dense<0> : vector<4xi8>) : !fir.array<4xi8> -// CHECK: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> -// CHECK: func private @bar_(!fir.ref) - -// LLVMIR: %{{.*}} = llvm.mlir.addressof @a_ : !llvm.ptr> -// LLVMIR: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> -// LLVMIR: llvm.call @bar_(%{{.*}}) : (!llvm.ptr) -> () -// LLVMIR: llvm.call @bar2_(%{{.*}}) : (!llvm.ptr) -> () - -// LLVMIR: llvm.mlir.global common @a_(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> -// LLVMIR: llvm.mlir.global common @__BLNK__(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> -// LLVMIR: llvm.func @bar_(!llvm.ptr) attributes {sym_visibility = "private"} -// LLVMIR: llvm.func @bar2_(!llvm.ptr) attributes {sym_visibility = "private"} +// CHECK-UNDER: func @foo_ +// CHECK-UNDER: %{{.*}} = fir.address_of(@a_) : !fir.ref> +// CHECK-UNDER: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> +// CHECK-UNDER: fir.call @bar_ +// CHECK-UNDER: fir.call @bar2_ +// CHECK-UNDER: fir.global common @a_(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-UNDER: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-UNDER: func private @bar_(!fir.ref) + +// CHECK-NOUNDER: func @foo +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@a) : !fir.ref> +// CHECK-NOUNDER: %{{.*}} = fir.address_of(@__BLNK__) : !fir.ref> +// CHECK-NOUNDER: fir.call @bar +// CHECK-NOUNDER: fir.call @bar2 +// CHECK-NOUNDER: fir.global common @a(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-NOUNDER: fir.global common @__BLNK__(dense<0> : vector<4xi8>) : !fir.array<4xi8> +// CHECK-NOUNDER: func private @bar(!fir.ref) + +// LLVMIR-UNDER: %{{.*}} = llvm.mlir.addressof @a_ : !llvm.ptr> +// LLVMIR-UNDER: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> +// LLVMIR-UNDER: llvm.call @bar_(%{{.*}}) : (!llvm.ptr) -> () +// LLVMIR-UNDER: llvm.call @bar2_(%{{.*}}) : (!llvm.ptr) -> () + +// LLVMIR-UNDER: llvm.mlir.global common @a_(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +// LLVMIR-UNDER: llvm.mlir.global common @__BLNK__(dense<0> : vector<4xi8>) {{.*}} : !llvm.array<4 x i8> +// LLVMIR-UNDER: llvm.func @bar_(!llvm.ptr) attributes {sym_visibility = "private"} +// LLVMIR-UNDER: llvm.func @bar2_(!llvm.ptr) attributes {sym_visibility = "private"} + +// LLVMIR-NOUNDER: %{{.*}} = llvm.mlir.addressof @a : !llvm.ptr> +// LLVMIR-NOUNDER: %{{.*}} = llvm.mlir.addressof @__BLNK__ : !llvm.ptr> +// LLVMIR-NOUNDER: llvm.call @bar(%{{.*}}) : (!llvm.ptr) -> () +//
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
awarzynski added a comment. Driver changes LGTM, thanks! I will defer to others for changes in other areas. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
clementval added a comment. Can you also add test in `flang/test/Fir/external-mangling.fir`? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
madanial updated this revision to Diff 492463. madanial added a comment. Addressing review comment CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 Files: 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/Driver/underscoring.f90 Index: flang/test/Driver/underscoring.f90 === --- /dev/null +++ flang/test/Driver/underscoring.f90 @@ -0,0 +1,24 @@ +! Test the -funderscoring flag + +! RUN: %flang_fc1 -S %s -o - 2>&1 | FileCheck %s --check-prefix=UNDERSCORING +! RUN: %flang_fc1 -S -fno-underscoring %s -o - 2>&1 | FileCheck %s --check-prefix=NO-UNDERSCORING + +subroutine test() + common /comblk/ a, b + external :: ext_sub + call ext_sub() +end + +! UNDERSCORING: test_ +! UNDERSCORING: ext_sub_ +! UNDERSCORING: comblk_ + +! NO-UNDERSCORING-NOT: test_ +! NO-UNDERSCORING-NOT: _QPtest +! NO-UNDERSCORING: test +! NO-UNDERSCORING-NOT: ext_sub_ +! NO-UNDERSCORING-NOT: _QPext_sub +! NO-UNDERSCORING: ext_sub +! NO-UNDERSCORING-NOT: comblk_ +! NO-UNDERSCORING-NOT: _QBcomblk +! NO-UNDERSCORING: comblk Index: flang/test/Driver/driver-help.f90 === --- flang/test/Driver/driver-help.f90 +++ flang/test/Driver/driver-help.f90 @@ -50,6 +50,7 @@ ! HELP-NEXT: -fpass-plugin= Load pass plugin from a dynamic shared object file (only with new pass manager). ! HELP-NEXT: -freciprocal-math Allow division operations to be reassociated ! HELP-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages +! HELP-NEXT: -funderscoring Appends one trailing underscore to external names ! HELP-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV. ! HELP-NEXT: -help Display available options ! HELP-NEXT: -IAdd directory to the end of the list of include search paths @@ -135,6 +136,7 @@ ! HELP-FC1-NEXT: -fpass-plugin= Load pass plugin from a dynamic shared object file (only with new pass manager). ! HELP-FC1-NEXT: -freciprocal-math Allow division operations to be reassociated ! HELP-FC1-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages +! HELP-FC1-NEXT: -funderscoring Appends one trailing underscore to external names ! HELP-FC1-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV. ! HELP-FC1-NEXT: -help Display available options ! HELP-FC1-NEXT: -init-only Only execute frontend initialization Index: flang/test/Driver/driver-help-hidden.f90 === --- flang/test/Driver/driver-help-hidden.f90 +++ flang/test/Driver/driver-help-hidden.f90 @@ -52,6 +52,7 @@ ! CHECK-NEXT: -fpass-plugin= Load pass plugin from a dynamic shared object file (only with new pass manager). ! CHECK-NEXT: -freciprocal-math Allow division operations to be reassociated ! CHECK-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages +! CHECK-NEXT: -funderscoring Appends one trailing underscore to external names ! CHECK-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV. ! CHECK-NEXT: -help Display available options ! CHECK-NEXT: -IAdd directory to the end of the list of include search paths Index: flang/lib/Optimizer/Transforms/ExternalNameConversion.cpp === --- flang/lib/Optimizer/Transforms/ExternalNameConversion.cpp +++ flang/lib/Optimizer/Transforms/ExternalNameConversion.cpp @@ -32,11 +32,16 @@ std::string mangleExternalName(const std::pair - result) { + result, + bool appendUnderscore) { if (result.first == fir::NameUniquer::NameKind::COMMON && result.second.name.empty()) return "__BLNK__"; - return result.second.name + "_"; + + if (appendUnderscore) +return result.second.name + "_"; + + return result.second.name; } //===--===// @@ -49,6 +54,10 @@ public: using OpRewritePattern::OpRewritePattern; + MangleNameOnCallOp(mlir::MLIRContext *ctx, bool appendUnderscore) + : mlir::OpRewritePattern(ctx), +appendUnderscore(appendUnderscore) {} + mlir::LogicalResult matchAndRewrite(fir::CallOp op, mlir::PatternRewriter ) const override { @@ -58,34 +67,49 @@
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
clementval added a comment. Small suggestion Comment at: flang/lib/Optimizer/Transforms/ExternalNameConversion.cpp:41-45 + std::string newName{result.second.name}; + if (appendUnderscore) +newName = newName + "_"; + + return newName; To avoid new copy CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D140795: [Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names
madanial updated this revision to Diff 492312. madanial retitled this revision from "[Flang] Add user option -funderscoring/-fnounderscoring to enable/disable ExternalNameConversionPass" to "[Flang] Add user option -funderscoring/-fnounderscoring to control trailing underscore added to external names". madanial edited the summary of this revision. madanial added a comment. Herald added a reviewer: sscalpone. Herald added subscribers: sunshaoce, mehdi_amini. Implementing functionality to control just the trailing underscore for external names to achieve similar functionality to the option in gfortran, as well as rebase and address review comments. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D140795/new/ https://reviews.llvm.org/D140795 Files: 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/Driver/underscoring.f90 Index: flang/test/Driver/underscoring.f90 === --- /dev/null +++ flang/test/Driver/underscoring.f90 @@ -0,0 +1,24 @@ +! Test the -funderscoring flag + +! RUN: %flang_fc1 -S %s -o - 2>&1 | FileCheck %s --check-prefix=UNDERSCORING +! RUN: %flang_fc1 -S -fno-underscoring %s -o - 2>&1 | FileCheck %s --check-prefix=NO-UNDERSCORING + +subroutine test() + common /comblk/ a, b + external :: ext_sub + call ext_sub() +end + +! UNDERSCORING: test_ +! UNDERSCORING: ext_sub_ +! UNDERSCORING: comblk_ + +! NO-UNDERSCORING-NOT: test_ +! NO-UNDERSCORING-NOT: _QPtest +! NO-UNDERSCORING: test +! NO-UNDERSCORING-NOT: ext_sub_ +! NO-UNDERSCORING-NOT: _QPext_sub +! NO-UNDERSCORING: ext_sub +! NO-UNDERSCORING-NOT: comblk_ +! NO-UNDERSCORING-NOT: _QBcomblk +! NO-UNDERSCORING: comblk Index: flang/test/Driver/driver-help.f90 === --- flang/test/Driver/driver-help.f90 +++ flang/test/Driver/driver-help.f90 @@ -50,6 +50,7 @@ ! HELP-NEXT: -fpass-plugin= Load pass plugin from a dynamic shared object file (only with new pass manager). ! HELP-NEXT: -freciprocal-math Allow division operations to be reassociated ! HELP-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages +! HELP-NEXT: -funderscoring Appends one trailing underscore to external names ! HELP-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV. ! HELP-NEXT: -help Display available options ! HELP-NEXT: -IAdd directory to the end of the list of include search paths @@ -135,6 +136,7 @@ ! HELP-FC1-NEXT: -fpass-plugin= Load pass plugin from a dynamic shared object file (only with new pass manager). ! HELP-FC1-NEXT: -freciprocal-math Allow division operations to be reassociated ! HELP-FC1-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages +! HELP-FC1-NEXT: -funderscoring Appends one trailing underscore to external names ! HELP-FC1-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV. ! HELP-FC1-NEXT: -help Display available options ! HELP-FC1-NEXT: -init-only Only execute frontend initialization Index: flang/test/Driver/driver-help-hidden.f90 === --- flang/test/Driver/driver-help-hidden.f90 +++ flang/test/Driver/driver-help-hidden.f90 @@ -52,6 +52,7 @@ ! CHECK-NEXT: -fpass-plugin= Load pass plugin from a dynamic shared object file (only with new pass manager). ! CHECK-NEXT: -freciprocal-math Allow division operations to be reassociated ! CHECK-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages +! CHECK-NEXT: -funderscoring Appends one trailing underscore to external names ! CHECK-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV. ! CHECK-NEXT: -help Display available options ! CHECK-NEXT: -IAdd directory to the end of the list of include search paths Index: flang/lib/Optimizer/Transforms/ExternalNameConversion.cpp === --- flang/lib/Optimizer/Transforms/ExternalNameConversion.cpp +++ flang/lib/Optimizer/Transforms/ExternalNameConversion.cpp @@ -32,11 +32,17 @@ std::string mangleExternalName(const std::pair - result) { + result, + bool appendUnderscore) { if (result.first == fir::NameUniquer::NameKind::COMMON && result.second.name.empty()) return "__BLNK__"; - return result.second.name + "_";