Author: Fangrui Song Date: 2024-08-15T17:32:16-07:00 New Revision: 812e049ac1c2424f96746ac4c453d6255b0a6ca5
URL: https://github.com/llvm/llvm-project/commit/812e049ac1c2424f96746ac4c453d6255b0a6ca5 DIFF: https://github.com/llvm/llvm-project/commit/812e049ac1c2424f96746ac4c453d6255b0a6ca5.diff LOG: [Driver] Correctly handle -Wa,--crel -Wa,--no-crel Follow-up to #97378 Added: Modified: clang/lib/Driver/ToolChains/CommonArgs.cpp clang/test/Driver/crel.c Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 1cba3e1220264..320d2901da06e 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1143,8 +1143,8 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args, addMachineOutlinerArgs(D, Args, CmdArgs, ToolChain.getEffectiveTriple(), /*IsLTO=*/true, PluginOptPrefix); + bool Crel = false; for (const Arg *A : Args.filtered(options::OPT_Wa_COMMA)) { - bool Crel = false; for (StringRef V : A->getValues()) { if (V == "--crel") Crel = true; @@ -1154,13 +1154,13 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args, continue; A->claim(); } - if (Crel) { - if (Triple.isOSBinFormatELF() && !Triple.isMIPS()) { - CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + "-crel")); - } else { - D.Diag(diag::err_drv_unsupported_opt_for_target) - << "-Wa,--crel" << D.getTargetTriple(); - } + } + if (Crel) { + if (Triple.isOSBinFormatELF() && !Triple.isMIPS()) { + CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + "-crel")); + } else { + D.Diag(diag::err_drv_unsupported_opt_for_target) + << "-Wa,--crel" << D.getTargetTriple(); } } } diff --git a/clang/test/Driver/crel.c b/clang/test/Driver/crel.c index a47e7ebfeedd8..e1b3f58c6ea5b 100644 --- a/clang/test/Driver/crel.c +++ b/clang/test/Driver/crel.c @@ -24,8 +24,10 @@ /// The --allow-experimental-crel error check doesn't apply to LTO. // RUN: %clang -### --target=x86_64-linux -Werror -flto -Wa,--crel %s 2>&1 | FileCheck %s --check-prefix=LTO +// RUN: %clang -### --target=x86_64-linux -Werror -flto -Wa,--crel -Wa,--no-crel %s 2>&1 | FileCheck %s --check-prefix=LTO-NO // LTO: "-plugin-opt=-crel" +// LTO-NO-NOT: "-plugin-opt=-crel" // RUN: touch %t.o // RUN: not %clang -### --target=mips64-linux-gnu -flto -Wa,--crel %t.o 2>&1 | FileCheck %s --check-prefix=ERR _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits