summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2014-07-24 19:53:33 +0000
committerReid Kleckner <reid@kleckner.net>2014-07-24 19:53:33 +0000
commit9a412d13c14ec27bb99354bebf9a71f74bde2330 (patch)
treeececa40a379ac27a4cdbabdd29307e95310937e1 /llvm/test
parent6637d4e2e7e9c48906908f2dd27e8329288080e8 (diff)
downloadbcm5719-llvm-9a412d13c14ec27bb99354bebf9a71f74bde2330.tar.gz
bcm5719-llvm-9a412d13c14ec27bb99354bebf9a71f74bde2330.zip
Replace an assertion with a fatal error
Frontends are responsible for putting inalloca on parameters that would be passed in memory and not registers. llvm-svn: 213891
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/X86/inalloca-regparm.ll15
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/inalloca-regparm.ll b/llvm/test/CodeGen/X86/inalloca-regparm.ll
new file mode 100644
index 00000000000..9dd916bfbb3
--- /dev/null
+++ b/llvm/test/CodeGen/X86/inalloca-regparm.ll
@@ -0,0 +1,15 @@
+; RUN: llc -mtriple=i686-windows-msvc < %s -o /dev/null
+; RUN: not llc -mtriple=x86_64-windows-msvc %s -o /dev/null 2>&1 | FileCheck %s
+
+; This will compile successfully on x86 but not x86_64, because %b will become a
+; register parameter.
+
+declare x86_thiscallcc i32 @f(i32 %a, i32* inalloca %b)
+define void @g() {
+ %b = alloca inalloca i32
+ store i32 2, i32* %b
+ call x86_thiscallcc i32 @f(i32 0, i32* inalloca %b)
+ ret void
+}
+
+; CHECK: cannot use inalloca attribute on a register parameter
OpenPOWER on IntegriCloud