diff options
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 3 | ||||
-rw-r--r-- | clang/test/Driver/arm-alignment.c | 9 |
2 files changed, 10 insertions, 2 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index c09d48906e5..bb9efaf1430 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -823,8 +823,7 @@ void Clang::AddARMTargetArgs(const ArgList &Args, if (A->getOption().matches(options::OPT_mno_unaligned_access)) CmdArgs.push_back("-arm-strict-align"); else { - if (getToolChain().getTriple().getSubArch() == - llvm::Triple::SubArchType::ARMSubArch_v6m) + if (Triple.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v6m) D.Diag(diag::err_target_unsupported_unaligned) << "v6m"; CmdArgs.push_back("-arm-no-strict-align"); } diff --git a/clang/test/Driver/arm-alignment.c b/clang/test/Driver/arm-alignment.c index e7b7ac34874..3fe595143f7 100644 --- a/clang/test/Driver/arm-alignment.c +++ b/clang/test/Driver/arm-alignment.c @@ -49,3 +49,12 @@ // CHECK-ALIGNED-ARM: "-backend-option" "-arm-strict-align" // CHECK-ALIGNED-AARCH64: "-backend-option" "-aarch64-strict-align" + +// Make sure that v6M cores always trigger the unsupported aligned accesses error +// for all supported architecture triples. +// RUN: not %clang -c -target thumbv6m-none-gnueabi -mcpu=cortex-m0 -munaligned-access %s 2>&1 | \ +// RUN: FileCheck --check-prefix CHECK-UNALIGN-NOT-SUPPORTED %s +// RUN: not %clang -c -target thumb-none-gnueabi -mcpu=cortex-m0 -munaligned-access %s 2>&1 | \ +// RUN: FileCheck --check-prefix CHECK-UNALIGN-NOT-SUPPORTED %s + +// CHECK-UNALIGN-NOT-SUPPORTED: error: the v6m sub-architecture does not support unaligned accesses |