diff options
Diffstat (limited to 'clang/lib/Driver/ToolChain.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChain.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index 9774d3f..646dbc0 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -230,6 +230,20 @@ static void getAArch64MultilibFlags(const Driver &D, Result.push_back(BranchProtectionArg->getAsString(Args)); } + if (Arg *AlignArg = Args.getLastArg( + options::OPT_mstrict_align, options::OPT_mno_strict_align, + options::OPT_mno_unaligned_access, options::OPT_munaligned_access)) { + if (AlignArg->getOption().matches(options::OPT_mstrict_align) || + AlignArg->getOption().matches(options::OPT_mno_unaligned_access)) + Result.push_back(AlignArg->getAsString(Args)); + } + + if (Arg *Endian = Args.getLastArg(options::OPT_mbig_endian, + options::OPT_mlittle_endian)) { + if (Endian->getOption().matches(options::OPT_mbig_endian)) + Result.push_back(Endian->getAsString(Args)); + } + const Arg *ABIArg = Args.getLastArgNoClaim(options::OPT_mabi_EQ); if (ABIArg) { Result.push_back(ABIArg->getAsString(Args)); @@ -287,6 +301,20 @@ static void getARMMultilibFlags(const Driver &D, if (BranchProtectionArg) { Result.push_back(BranchProtectionArg->getAsString(Args)); } + + if (Arg *AlignArg = Args.getLastArg( + options::OPT_mstrict_align, options::OPT_mno_strict_align, + options::OPT_mno_unaligned_access, options::OPT_munaligned_access)) { + if (AlignArg->getOption().matches(options::OPT_mstrict_align) || + AlignArg->getOption().matches(options::OPT_mno_unaligned_access)) + Result.push_back(AlignArg->getAsString(Args)); + } + + if (Arg *Endian = Args.getLastArg(options::OPT_mbig_endian, + options::OPT_mlittle_endian)) { + if (Endian->getOption().matches(options::OPT_mbig_endian)) + Result.push_back(Endian->getAsString(Args)); + } } static void getRISCVMultilibFlags(const Driver &D, const llvm::Triple &Triple, |