[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