summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandros Lamprineas <alexandros.lamprineas@arm.com>2015-10-05 12:45:10 +0000
committerAlexandros Lamprineas <alexandros.lamprineas@arm.com>2015-10-05 12:45:10 +0000
commiteda554a9b426f456366b41d53e1d85d879da1026 (patch)
treed1f8907fa36cad2141af828c860044b0a371d9f5
parentbb9c116165644db4f61b6cca67af050dda91f838 (diff)
downloadbcm5719-llvm-eda554a9b426f456366b41d53e1d85d879da1026.tar.gz
bcm5719-llvm-eda554a9b426f456366b41d53e1d85d879da1026.zip
The Driver does not set the +strict-align flag when targeting
[ARM] armv6m + netbsd. Tests are misssing for armv6m + darwin as well. Differential Revision: http://reviews.llvm.org/D13217 llvm-svn: 249308
-rw-r--r--clang/lib/Basic/Targets.cpp4
-rw-r--r--clang/lib/Driver/Tools.cpp3
-rw-r--r--clang/test/Driver/arm-alignment.c6
3 files changed, 8 insertions, 5 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 87ecc57b0d7..4397c7a677f 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -4452,10 +4452,6 @@ public:
if (Feature[0] == '+')
Features[Feature+1] = true;
- if (ArchVersion < 6 ||
- (ArchVersion == 6 && ArchProfile == llvm::ARM::PK_M))
- Features["strict-align"] = true;
-
return TargetInfo::initFeatureMap(Features, Diags, CPU, FeaturesVec);
}
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 1b42ff70f2b..649f90784e9 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -834,7 +834,8 @@ static void getARMTargetFeatures(const ToolChain &TC,
// The above behavior is consistent with GCC.
int VersionNum = getARMSubArchVersionNumber(Triple);
if (Triple.isOSDarwin() || Triple.isOSNetBSD()) {
- if (VersionNum < 6)
+ if (VersionNum < 6 ||
+ Triple.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v6m)
Features.push_back("+strict-align");
} else if (Triple.isOSLinux() || Triple.isOSNaCl()) {
if (VersionNum < 7)
diff --git a/clang/test/Driver/arm-alignment.c b/clang/test/Driver/arm-alignment.c
index 21a29192a56..3e216520395 100644
--- a/clang/test/Driver/arm-alignment.c
+++ b/clang/test/Driver/arm-alignment.c
@@ -59,6 +59,12 @@
// RUN: %clang -target armv6-unknown-nacl-gnueabihf -### %s 2> %t
// RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
+// RUN: %clang -target armv6m-apple-darwin -### %s 2> %t
+// RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
+
+// RUN: %clang -target armv6m-netbsd-eabi -### %s 2> %t
+// RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
+
// RUN: %clang -target aarch64-none-gnueabi -mno-unaligned-access -### %s 2> %t
// RUN: FileCheck --check-prefix=CHECK-ALIGNED-AARCH64 < %t %s
OpenPOWER on IntegriCloud