summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Lytton <robert@xmos.com>2013-11-12 10:11:05 +0000
committerRobert Lytton <robert@xmos.com>2013-11-12 10:11:05 +0000
commited835b6fd4281ea00e22b03b86342ea48f57839f (patch)
tree1ddc80931e0ac2d1b5efe08ded579f0d60e95327
parenteaf6f36e6de425064cdd608538d0a7c9bbf74ee5 (diff)
downloadbcm5719-llvm-ed835b6fd4281ea00e22b03b86342ea48f57839f.tar.gz
bcm5719-llvm-ed835b6fd4281ea00e22b03b86342ea48f57839f.zip
XCore target: return error for unsupported alignment
llvm-svn: 194463
-rw-r--r--llvm/lib/Target/XCore/XCoreFrameLowering.cpp4
-rw-r--r--llvm/test/CodeGen/XCore/alignment.ll9
2 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Target/XCore/XCoreFrameLowering.cpp b/llvm/lib/Target/XCore/XCoreFrameLowering.cpp
index c60259d13f2..d4075e073bd 100644
--- a/llvm/lib/Target/XCore/XCoreFrameLowering.cpp
+++ b/llvm/lib/Target/XCore/XCoreFrameLowering.cpp
@@ -93,6 +93,10 @@ void XCoreFrameLowering::emitPrologue(MachineFunction &MF) const {
XCoreFunctionInfo *XFI = MF.getInfo<XCoreFunctionInfo>();
DebugLoc dl = MBBI != MBB.end() ? MBBI->getDebugLoc() : DebugLoc();
+ if (MFI->getMaxAlignment() > getStackAlignment())
+ report_fatal_error("emitPrologue unsupported alignment: "
+ + Twine(MFI->getMaxAlignment()));
+
bool FP = hasFP(MF);
const AttributeSet &PAL = MF.getFunction()->getAttributes();
diff --git a/llvm/test/CodeGen/XCore/alignment.ll b/llvm/test/CodeGen/XCore/alignment.ll
new file mode 100644
index 00000000000..28bdf3b7420
--- /dev/null
+++ b/llvm/test/CodeGen/XCore/alignment.ll
@@ -0,0 +1,9 @@
+; RUN: not llc < %s -march=xcore 2>&1 | FileCheck %s
+
+; CHECK: emitPrologue unsupported alignment: 8
+define void @f() nounwind {
+entry:
+ %BadAlignment = alloca i64, align 8
+ ret void
+}
+
OpenPOWER on IntegriCloud