aboutsummaryrefslogtreecommitdiffstats
path: root/test/Integer/calltest_bt.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Integer/calltest_bt.ll')
-rw-r--r--test/Integer/calltest_bt.ll35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/Integer/calltest_bt.ll b/test/Integer/calltest_bt.ll
new file mode 100644
index 0000000..d313a99
--- /dev/null
+++ b/test/Integer/calltest_bt.ll
@@ -0,0 +1,35 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+%FunTy = type i28(i28)
+
+declare i28 "test"(...) ; Test differences of prototype
+declare i28 "test"() ; Differ only by vararg
+
+implementation
+
+define void "invoke"(%FunTy *%x) {
+ %foo = call %FunTy* %x(i28 123)
+ %foo2 = tail call %FunTy* %x(i28 123)
+ ret void
+}
+
+define i28 "main"(i28 %argc) ; TODO: , sbyte **argv, sbyte **envp)
+begin
+ %retval = call i28 (i28) *%test(i28 %argc)
+ %two = add i28 %retval, %retval
+ %retval2 = invoke i28 %test(i28 %argc)
+ to label %Next unwind label %Error
+Next:
+ %two2 = add i28 %two, %retval2
+ call void %invoke (%FunTy* %test)
+ ret i28 %two2
+Error:
+ ret i28 -1
+end
+
+define i28 "test"(i28 %i0)
+begin
+ ret i28 %i0
+end