summaryrefslogtreecommitdiff
path: root/test/CodeGen/PowerPC/ppc64-vaarg-int.ll
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2012-03-24 03:53:55 +0000
committerHal Finkel <hfinkel@anl.gov>2012-03-24 03:53:55 +0000
commit179a4ddd1fe52a3698a4b87e024250ed508df77a (patch)
tree4586ce3ffab8e4f49d47caef1feace53a2114aa2 /test/CodeGen/PowerPC/ppc64-vaarg-int.ll
parent5194d6dd9575845cf1cbb2f10a0c769634d116a9 (diff)
downloadllvm-179a4ddd1fe52a3698a4b87e024250ed508df77a.tar.gz
llvm-179a4ddd1fe52a3698a4b87e024250ed508df77a.tar.bz2
llvm-179a4ddd1fe52a3698a4b87e024250ed508df77a.tar.xz
Fix small-integer VAARG on SVR4 ABI PPC64.
The PPC64 SVR4 ABI requires integer stack arguments, and thus the var. args., that are smaller than 64 bits be zero extended to 64 bits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153373 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/PowerPC/ppc64-vaarg-int.ll')
-rw-r--r--test/CodeGen/PowerPC/ppc64-vaarg-int.ll20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/CodeGen/PowerPC/ppc64-vaarg-int.ll b/test/CodeGen/PowerPC/ppc64-vaarg-int.ll
new file mode 100644
index 0000000000..5a63b01bad
--- /dev/null
+++ b/test/CodeGen/PowerPC/ppc64-vaarg-int.ll
@@ -0,0 +1,20 @@
+target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"
+target triple = "powerpc64-unknown-linux-gnu"
+; RUN: llc < %s | FileCheck %s
+
+define i32 @intvaarg(i32 %a, ...) nounwind {
+entry:
+ %va = alloca i8*, align 8
+ %va1 = bitcast i8** %va to i8*
+ call void @llvm.va_start(i8* %va1)
+ %0 = va_arg i8** %va, i32
+ %sub = sub nsw i32 %a, %0
+ ret i32 %sub
+}
+
+declare void @llvm.va_start(i8*) nounwind
+
+; CHECK: @intvaarg
+; Make sure that the va pointer is incremented by 8 (not 4).
+; CHECK: addi{{.*}}, 8
+