summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorOliver Stannard <oliver.stannard@arm.com>2014-08-13 09:18:12 +0000
committerOliver Stannard <oliver.stannard@arm.com>2014-08-13 09:18:12 +0000
commit76244be6d4f8cd953c5ebe869f5115dcc7ec4f7b (patch)
tree055830bf22c499d911593c6377ac5c9bb467962f /clang
parent8edd497996038e058671dd22eae14deeaf3e7be2 (diff)
downloadbcm5719-llvm-76244be6d4f8cd953c5ebe869f5115dcc7ec4f7b.tar.gz
bcm5719-llvm-76244be6d4f8cd953c5ebe869f5115dcc7ec4f7b.zip
Emit diagnostic for -munaligned-access on v6m targets
Rather than silently disabling unaligned accesses for v6m targets as in the previous patch to llvm, instead produce a warning saying that this architecture doesn't support unaligned accesses. Patch by Ben Foster llvm-svn: 215531
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/Basic/DiagnosticCommonKinds.td2
-rw-r--r--clang/lib/Driver/Tools.cpp6
2 files changed, 7 insertions, 1 deletions
diff --git a/clang/include/clang/Basic/DiagnosticCommonKinds.td b/clang/include/clang/Basic/DiagnosticCommonKinds.td
index f40eea625dc..0b7f9875e5b 100644
--- a/clang/include/clang/Basic/DiagnosticCommonKinds.td
+++ b/clang/include/clang/Basic/DiagnosticCommonKinds.td
@@ -123,6 +123,8 @@ def err_target_unknown_abi : Error<"unknown target ABI '%0'">;
def err_target_unknown_fpmath : Error<"unknown FP unit '%0'">;
def err_target_unsupported_fpmath : Error<
"the '%0' unit is not supported with this instruction set">;
+def err_target_unsupported_unaligned : Error<
+ "the %0 sub-architecture does not support unaligned accesses">;
// Source manager
def err_cannot_open_file : Error<"cannot open file '%0': %1">, DefaultFatal;
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 2a817f78638..21ffce24432 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -806,8 +806,12 @@ void Clang::AddARMTargetArgs(const ArgList &Args,
CmdArgs.push_back("-backend-option");
if (A->getOption().matches(options::OPT_mno_unaligned_access))
CmdArgs.push_back("-arm-strict-align");
- else
+ else {
+ if (getToolChain().getTriple().getSubArch() ==
+ llvm::Triple::SubArchType::ARMSubArch_v6m)
+ D.Diag(diag::err_target_unsupported_unaligned) << "v6m";
CmdArgs.push_back("-arm-no-strict-align");
+ }
}
}
OpenPOWER on IntegriCloud