aboutsummaryrefslogtreecommitdiffstats
path: root/test/Assembler/2007-01-12-Varargs-Upgrade.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Assembler/2007-01-12-Varargs-Upgrade.ll')
-rw-r--r--test/Assembler/2007-01-12-Varargs-Upgrade.ll28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/Assembler/2007-01-12-Varargs-Upgrade.ll b/test/Assembler/2007-01-12-Varargs-Upgrade.ll
new file mode 100644
index 0000000..e5f0ab2
--- /dev/null
+++ b/test/Assembler/2007-01-12-Varargs-Upgrade.ll
@@ -0,0 +1,28 @@
+; For PR1093: This test checks that llvm-upgrade correctly translates
+; the llvm.va_* intrinsics to their cannonical argument form (i8*).
+; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | \
+; RUN: grep { bitcast} | wc -l | grep 5
+
+%str = internal constant [7 x ubyte] c"%d %d\0A\00" ; <[7 x ubyte]*> [#uses=1]
+
+implementation ; Functions:
+
+void %f(int %a_arg, ...) {
+entry:
+ %l1 = alloca sbyte*, align 4 ; <sbyte**> [#uses=5]
+ %l2 = alloca sbyte*, align 4 ; <sbyte**> [#uses=4]
+ %l3 = alloca sbyte* ; <sbyte**> [#uses=2]
+ call void %llvm.va_start( sbyte** %l1 )
+ call void %llvm.va_copy( sbyte** %l2, sbyte** %l3 )
+ call void %llvm.va_end( sbyte** %l1 )
+ call void %llvm.va_end( sbyte** %l2 )
+ ret void
+}
+
+declare void %llvm.va_start(sbyte**)
+
+declare void %llvm.va_copy(sbyte**, sbyte**)
+
+declare int %printf(ubyte*, ...)
+
+declare void %llvm.va_end(sbyte**)