[clang] ebf4c69 - [Clang][LTO][GISel] Propagate `-fglobal-siel` to LTO (#69747)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Oct 24 09:13:04 PDT 2023
Author: Min-Yih Hsu
Date: 2023-10-24T09:13:01-07:00
New Revision: ebf4c698c35662087bc52f54c6ea51e2e263b101
URL: https://github.com/llvm/llvm-project/commit/ebf4c698c35662087bc52f54c6ea51e2e263b101
DIFF: https://github.com/llvm/llvm-project/commit/ebf4c698c35662087bc52f54c6ea51e2e263b101.diff
LOG: [Clang][LTO][GISel] Propagate `-fglobal-siel` to LTO (#69747)
Translate `-fglobal-isel` to `-plugin-opt=-global-isel=1`.
Added:
Modified:
clang/lib/Driver/ToolChains/CommonArgs.cpp
clang/test/Driver/lto.c
Removed:
################################################################################
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 7b2966f70bf6fc6..6ea89d7726db2d0 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -694,6 +694,16 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args,
CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
ParallelismOpt + Parallelism));
+ // Pass down GlobalISel options.
+ if (Arg *A = Args.getLastArg(options::OPT_fglobal_isel,
+ options::OPT_fno_global_isel)) {
+ // Parsing -fno-global-isel explicitly gives architectures that enable GISel
+ // by default a chance to disable it.
+ CmdArgs.push_back(Args.MakeArgString(
+ Twine(PluginOptPrefix) + "-global-isel=" +
+ (A->getOption().matches(options::OPT_fglobal_isel) ? "1" : "0")));
+ }
+
// If an explicit debugger tuning argument appeared, pass it along.
if (Arg *A =
Args.getLastArg(options::OPT_gTune_Group, options::OPT_ggdbN_Group)) {
diff --git a/clang/test/Driver/lto.c b/clang/test/Driver/lto.c
index 62bdbd6f5d3cfa3..b6c89eb99e27419 100644
--- a/clang/test/Driver/lto.c
+++ b/clang/test/Driver/lto.c
@@ -105,3 +105,12 @@
// FLTO-THIN: -flto=thin
// FLTO-THIN-NOT: "-flto"
// FLTO-THIN-NOT: -flto=full
+
+// -flto passes along an explicit GlobalISel flag.
+// RUN: %clang --target=riscv64-linux-gnu -### %s -flto -fglobal-isel 2> %t
+// RUN: FileCheck --check-prefix=CHECK-GISEL < %t %s
+// RUN: %clang --target=aarch64-linux-gnu -### %s -flto -fno-global-isel 2> %t
+// RUN: FileCheck --check-prefix=CHECK-DISABLE-GISEL < %t %s
+//
+// CHECK-GISEL: "-plugin-opt=-global-isel=1"
+// CHECK-DISABLE-GISEL: "-plugin-opt=-global-isel=0"
More information about the cfe-commits
mailing list