summaryrefslogtreecommitdiff
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
commitc17ea93ed516d5c7d03a8d5c7fc470a0f254b58a (patch)
treec6625154686be3edcb14d4436377a3a42bcc664c
parent3cda2d38851d73eec38d38a46462aaa65de4ef8e (diff)
downloadllvm-c17ea93ed516d5c7d03a8d5c7fc470a0f254b58a.tar.gz
llvm-c17ea93ed516d5c7d03a8d5c7fc470a0f254b58a.tar.bz2
llvm-c17ea93ed516d5c7d03a8d5c7fc470a0f254b58a.tar.xz
XCore target: return error for unsupported alignment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194463 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/XCore/XCoreFrameLowering.cpp4
-rw-r--r--test/CodeGen/XCore/alignment.ll9
2 files changed, 13 insertions, 0 deletions
diff --git a/lib/Target/XCore/XCoreFrameLowering.cpp b/lib/Target/XCore/XCoreFrameLowering.cpp
index c60259d13f..d4075e073b 100644
--- a/lib/Target/XCore/XCoreFrameLowering.cpp
+++ b/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/test/CodeGen/XCore/alignment.ll b/test/CodeGen/XCore/alignment.ll
new file mode 100644
index 0000000000..28bdf3b742
--- /dev/null
+++ b/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
+}
+