aboutsummaryrefslogtreecommitdiff
path: root/clang/lib
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2023-05-26 15:30:23 -0700
committerFangrui Song <i@maskray.me>2023-05-26 15:30:23 -0700
commit89d71c1efa85656b54bcd79b4278bc67690480e1 (patch)
tree0ea59c0c838b440c853c263fc82d97b2625ee366 /clang/lib
parent2be0abb7fe72ed4537b3eabcd3102d48ea845717 (diff)
downloadllvm-89d71c1efa85656b54bcd79b4278bc67690480e1.zip
llvm-89d71c1efa85656b54bcd79b4278bc67690480e1.tar.gz
llvm-89d71c1efa85656b54bcd79b4278bc67690480e1.tar.bz2
[Driver] Reject AIX-specific link options on non-AIX targets
Follow-up to D106688 and D146431. -b leads to a -Wunused-command-line-argument warning instead of an error without linking phase. -mxcoff-build-id= leads to a -Wunused-command-line-argument warning instead of an error.
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Driver/ToolChains/Clang.cpp12
-rw-r--r--clang/lib/Driver/ToolChains/CommonArgs.cpp9
2 files changed, 8 insertions, 13 deletions
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index e1adff4..2fd07b3 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -6370,10 +6370,14 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
}
}
- if (Arg *A = Args.getLastArgNoClaim(options::OPT_K);
- A && !TC.getTriple().isOSAIX())
- D.Diag(diag::err_drv_unsupported_opt_for_target)
- << A->getAsString(Args) << TripleStr;
+ // Reject AIX-specific link options on other targets.
+ if (!TC.getTriple().isOSAIX()) {
+ for (const Arg *A : Args.filtered(options::OPT_b, options::OPT_K,
+ options::OPT_mxcoff_build_id_EQ)) {
+ D.Diag(diag::err_drv_unsupported_opt_for_target)
+ << A->getSpelling() << TripleStr;
+ }
+ }
if (Args.getLastArg(options::OPT_fapple_kext) ||
(Args.hasArg(options::OPT_mkernel) && types::isCXX(InputType)))
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 4a11be7..8854d13 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -303,15 +303,6 @@ void tools::AddLinkerInputs(const ToolChain &TC, const InputInfoList &Inputs,
// Pass -z prefix for gcc linker compatibility.
A.claim();
A.render(Args, CmdArgs);
- } else if (A.getOption().matches(options::OPT_b)) {
- const llvm::Triple &T = TC.getTriple();
- if (!T.isOSAIX()) {
- TC.getDriver().Diag(diag::err_drv_unsupported_opt_for_target)
- << A.getSpelling() << T.str();
- }
- // Pass -b prefix for AIX linker.
- A.claim();
- A.render(Args, CmdArgs);
} else {
A.renderAsInput(Args, CmdArgs);
}