dbc11b25c0b06d091a407dbceb92ab712dce9d73
[oota-llvm.git] / test / ExecutionEngine / 2005-12-02-TailCallBug.ll
1 ; PR672
2 ; RUN: llvm-as < %s | lli
3
4 ; This doesn't work on darwin/x86, xfail until PR736 is resolved.
5 ; XFAIL: i686-apple-darwin
6
7 int %main(){ 
8  %f   = cast int (int, int*, int)* %check_tail to int*
9  %res = tail call fastcc int %check_tail( int 10, int* %f,int 10)
10  ret int %res
11 }
12 fastcc int %check_tail(int %x, int* %f, int %g) {
13         %tmp1 = setgt int %x, 0
14         br bool %tmp1, label %if-then, label %if-else
15
16 if-then:
17         %fun_ptr = cast int* %f to int(int, int*, int)* 
18         %arg1    = add int %x, -1               
19         %res = tail call fastcc int %fun_ptr( int %arg1, int * %f, int %g)
20         ret int %res
21
22 if-else:
23         ret int %x
24 }