mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-23 04:52:54 +02:00
378bc328f0
be deleted. This will be reapplied as soon as possible and before the 3.6 branch date at any rate. Approved by Jim Grosbach, Lang Hames, Rafael Espindola. This reverts commits r215111, 215115, 215116, 215117, 215136. llvm-svn: 215154
23 lines
681 B
LLVM
23 lines
681 B
LLVM
; PR672
|
|
; RUN: %lli %s
|
|
; XFAIL: arm
|
|
|
|
define i32 @main() {
|
|
%f = bitcast i32 (i32, i32*, i32)* @check_tail to i32* ; <i32*> [#uses=1]
|
|
%res = tail call fastcc i32 @check_tail( i32 10, i32* %f, i32 10 ) ; <i32> [#uses=1]
|
|
ret i32 %res
|
|
}
|
|
|
|
define fastcc i32 @check_tail(i32 %x, i32* %f, i32 %g) {
|
|
%tmp1 = icmp sgt i32 %x, 0 ; <i1> [#uses=1]
|
|
br i1 %tmp1, label %if-then, label %if-else
|
|
if-then: ; preds = %0
|
|
%fun_ptr = bitcast i32* %f to i32 (i32, i32*, i32)* ; <i32 (i32, i32*, i32)*> [#uses=1]
|
|
%arg1 = add i32 %x, -1 ; <i32> [#uses=1]
|
|
%res = tail call fastcc i32 %fun_ptr( i32 %arg1, i32* %f, i32 %g ) ; <i32> [#uses=1]
|
|
ret i32 %res
|
|
if-else: ; preds = %0
|
|
ret i32 %x
|
|
}
|
|
|