llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-driver Author: None (simpal01) <details> <summary>Changes</summary> This adds the -mno-unaligned-access and -mbig-endian command line options to the set of flags used by the multilib selection for ARM and AArch64 targets. --- Full diff: https://github.com/llvm/llvm-project/pull/114782.diff 2 Files Affected: - (modified) clang/lib/Driver/ToolChain.cpp (+25) - (modified) clang/test/Driver/print-multi-selection-flags.c (+8) ``````````diff diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index bdf3da0c96adca..dec9af62ad79e4 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -230,6 +230,18 @@ static void getAArch64MultilibFlags(const Driver &D, Result.push_back(BranchProtectionArg->getAsString(Args)); } + const Arg *StrictAlignArg = + Args.getLastArgNoClaim(options::OPT_mstrict_align, options::OPT_mno_unaligned_access); + if (StrictAlignArg) { + Result.push_back(StrictAlignArg->getAsString(Args)); + } + + const Arg *BigEndian = + Args.getLastArgNoClaim(options::OPT_mbig_endian); + if (BigEndian) { + Result.push_back(BigEndian->getAsString(Args)); + } + const Arg *ABIArg = Args.getLastArgNoClaim(options::OPT_mabi_EQ); if (ABIArg) { Result.push_back(ABIArg->getAsString(Args)); @@ -287,6 +299,19 @@ static void getARMMultilibFlags(const Driver &D, if (BranchProtectionArg) { Result.push_back(BranchProtectionArg->getAsString(Args)); } + + const Arg *StrictAlignArg = + Args.getLastArgNoClaim(options::OPT_mstrict_align, options:: +OPT_mno_unaligned_access); + if (StrictAlignArg) { + Result.push_back(StrictAlignArg->getAsString(Args)); + } + + const Arg *BigEndian = + Args.getLastArgNoClaim(options::OPT_mbig_endian); + if (BigEndian) { + Result.push_back(BigEndian->getAsString(Args)); + } } static void getRISCVMultilibFlags(const Driver &D, const llvm::Triple &Triple, diff --git a/clang/test/Driver/print-multi-selection-flags.c b/clang/test/Driver/print-multi-selection-flags.c index 4bb62665ad8981..5bf6dca5096a73 100644 --- a/clang/test/Driver/print-multi-selection-flags.c +++ b/clang/test/Driver/print-multi-selection-flags.c @@ -68,6 +68,14 @@ // RUN: %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml -print-multi-flags-experimental --target=aarch64-none-elf -mbranch-protection=standard | FileCheck --check-prefix=CHECK-BRANCH-PROTECTION %s // CHECK-BRANCH-PROTECTION: -mbranch-protection=standard +// RUN: %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml -print-multi-flags-experimental --target=arm-none-eabi -mno-unaligned-access | FileCheck --check-prefix=CHECK-NO-UNALIGNED-ACCESS %s +// RUN: %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml -print-multi-flags-experimental --target=aarch64-none-elf -mno-unaligned-access | FileCheck --check-prefix=CHECK-NO-UNALIGNED-ACCESS %s +// CHECK-NO-UNALIGNED-ACCESS: -mno-unaligned-access + +// RUN: %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml -print-multi-flags-experimental --target=arm-none-eabi -mbig-endian | FileCheck --check-prefix=CHECK-BIG-ENDIAN %s +// RUN: %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml -print-multi-flags-experimental --target=aarch64-none-elf -mbig-endian | FileCheck --check-prefix=CHECK-BIG-ENDIAN %s +// CHECK-BIG-ENDIAN: -mbig-endian + // RUN: %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml -print-multi-flags-experimental --target=riscv32-none-elf -march=rv32g | FileCheck --check-prefix=CHECK-RV32 %s // CHECK-RV32: --target=riscv32-unknown-none-elf // CHECK-RV32: -mabi=ilp32d `````````` </details> https://github.com/llvm/llvm-project/pull/114782 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits