mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-19 01:34:32 +00:00
4a4fb84d4b
Most of the tests that behave differently on llvm-arm-linux buildbot did so becase the triple wasn't set correctly to armv5, so we can revert most of the special behaviour added previously. Some tests still need the special treatment, though. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176243 91177308-0d34-0410-b5e6-96231b3b80d8
23 lines
694 B
LLVM
23 lines
694 B
LLVM
; PR672
|
|
; RUN: %lli_mcjit %s
|
|
; XFAIL: mcjit-ia32
|
|
|
|
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
|
|
}
|
|
|