aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Driver.cpp
diff options
context:
space:
mode:
authorMichael Platings <michael.platings@arm.com>2023-03-09 19:38:26 +0000
committerMichael Platings <michael.platings@arm.com>2023-06-14 06:46:41 +0100
commita794ab92b41f00ba29b5852c34a510173638dcc0 (patch)
treef951a50a7dd8739e33c9abde1623dd7d2dfa7f7b /clang/lib/Driver/Driver.cpp
parent4794bdab7aed92e699db29e031bfe71f4005326f (diff)
downloadllvm-a794ab92b41f00ba29b5852c34a510173638dcc0.zip
llvm-a794ab92b41f00ba29b5852c34a510173638dcc0.tar.gz
llvm-a794ab92b41f00ba29b5852c34a510173638dcc0.tar.bz2
[Driver] Add -print-multi-flags-experimental option
This option causes the flags used for selecting multilibs to be printed. This is an experimental feature that is documented in detail in D143587. Differential Revision: https://reviews.llvm.org/D142933
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r--clang/lib/Driver/Driver.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 243aebb..87c31f9 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -2217,6 +2217,17 @@ bool Driver::HandleImmediateArgs(const Compilation &C) {
return false;
}
+ if (C.getArgs().hasArg(options::OPT_print_multi_flags)) {
+ Multilib::flags_list ArgFlags = TC.getMultilibFlags(C.getArgs());
+ llvm::StringSet<> ExpandedFlags = TC.getMultilibs().expandFlags(ArgFlags);
+ std::set<llvm::StringRef> SortedFlags;
+ for (const auto &FlagEntry : ExpandedFlags)
+ SortedFlags.insert(FlagEntry.getKey());
+ for (auto Flag : SortedFlags)
+ llvm::outs() << Flag << '\n';
+ return false;
+ }
+
if (C.getArgs().hasArg(options::OPT_print_multi_directory)) {
const Multilib &Multilib = TC.getMultilib();
if (Multilib.gccSuffix().empty())