diff options
Diffstat (limited to 'test/Integer/calltest_bt.ll')
-rw-r--r-- | test/Integer/calltest_bt.ll | 35 |
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 |