From: Jonathan Roelofs Date: Tue, 7 Oct 2014 15:11:32 +0000 (+0000) Subject: Emit diagnostic for -munaligned-access on v6m X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f2860dfd80786e0d7b2ddc4a76a4bbd899326419;p=clang Emit diagnostic for -munaligned-access on v6m Patch by: Charlie Turner git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@219211 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index c09d48906e..bb9efaf143 100644 --- a/lib/Driver/Tools.cpp +++ b/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/test/Driver/arm-alignment.c b/test/Driver/arm-alignment.c index e7b7ac3487..3fe595143f 100644 --- a/test/Driver/arm-alignment.c +++ b/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