[llvm-commits] CVS: llvm/test/Regression/Transforms/TailCallElim/tail_call_with_branch.ll
Chris Lattner
lattner at cs.uiuc.edu
Tue Dec 9 10:27:02 PST 2003
Changes in directory llvm/test/Regression/Transforms/TailCallElim:
tail_call_with_branch.ll added (r1.1)
---
Log message:
New testcase that is not actually handled yet, but should be in the future.
This is here to remind me to get back to this after a while.
---
Diffs of the changes: (+31 -0)
Index: llvm/test/Regression/Transforms/TailCallElim/tail_call_with_branch.ll
diff -c /dev/null llvm/test/Regression/Transforms/TailCallElim/tail_call_with_branch.ll:1.1
*** /dev/null Tue Dec 9 10:26:52 2003
--- llvm/test/Regression/Transforms/TailCallElim/tail_call_with_branch.ll Tue Dec 9 10:26:42 2003
***************
*** 0 ****
--- 1,31 ----
+ ; This testcase is due to tail-duplication not wanting to copy the return
+ ; instruction into the terminating blocks because there was other code
+ ; optimized out of the function after the taildup happened.
+
+ ; RUN: llvm-as < %s | opt -tailcallelim | llvm-dis | not grep call
+
+ int %t4(int %a) {
+ entry:
+ %tmp.1 = and int %a, 1
+ %tmp.2 = cast int %tmp.1 to bool
+ br bool %tmp.2, label %then.0, label %else.0
+
+ then.0:
+ %tmp.5 = add int %a, -1
+ %tmp.3 = call int %t4( int %tmp.5 )
+ br label %return
+
+ else.0:
+ %tmp.7 = setne int %a, 0
+ br bool %tmp.7, label %then.1, label %return
+
+ then.1:
+ %tmp.11 = add int %a, -2
+ %tmp.9 = call int %t4( int %tmp.11 )
+ br label %return
+
+ return:
+ %result.0 = phi int [ 0, %else.0 ], [ %tmp.3, %then.0 ], [ %tmp.9, %then.1 ]
+ ret int %result.0
+ }
+
More information about the llvm-commits
mailing list