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" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits