]> granicus.if.org Git - clang/commitdiff
Emit diagnostic for -munaligned-access on v6m targets
authorOliver Stannard <oliver.stannard@arm.com>
Wed, 13 Aug 2014 09:18:12 +0000 (09:18 +0000)
committerOliver Stannard <oliver.stannard@arm.com>
Wed, 13 Aug 2014 09:18:12 +0000 (09:18 +0000)
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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215531 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticCommonKinds.td
lib/Driver/Tools.cpp

index f40eea625dc32d3a1b4e069fca165a242095c491..0b7f9875e5bfa3b0139e1ba27f0b098ae933f7e4 100644 (file)
@@ -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;
index 2a817f78638fdcd18ba4ae16c2e08060cc649e1c..21ffce24432c5a8f4b1570805957006041ebda3f 100644 (file)
@@ -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");
+      }
     }
   }