mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
PlaceSafepoints: modernize gc.result.* -> gc.result
Differential Revision: http://reviews.llvm.org/D7516 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228625 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
99cc7e5307
commit
69a5c89128
@ -952,18 +952,7 @@ static Value *ReplaceWithStatepoint(const CallSite &CS, /* to replace */
|
||||
Instruction *gc_result = nullptr;
|
||||
std::vector<Type *> types; // one per 'any' type
|
||||
types.push_back(CS.getType()); // result type
|
||||
auto get_gc_result_id = [&](Type &Ty) {
|
||||
if (Ty.isIntegerTy()) {
|
||||
return Intrinsic::experimental_gc_result_int;
|
||||
} else if (Ty.isFloatingPointTy()) {
|
||||
return Intrinsic::experimental_gc_result_float;
|
||||
} else if (Ty.isPointerTy()) {
|
||||
return Intrinsic::experimental_gc_result_ptr;
|
||||
} else {
|
||||
llvm_unreachable("non java type encountered");
|
||||
}
|
||||
};
|
||||
Intrinsic::ID Id = get_gc_result_id(*CS.getType());
|
||||
Intrinsic::ID Id = Intrinsic::experimental_gc_result;
|
||||
Value *gc_result_func = Intrinsic::getDeclaration(M, Id, types);
|
||||
|
||||
std::vector<Value *> args;
|
||||
|
@ -51,11 +51,26 @@ entry:
|
||||
br label %other
|
||||
other:
|
||||
; CHECK-LABEL: other
|
||||
; CHECK: statepoint
|
||||
; CHECK: statepoint
|
||||
; CHECK-NOT: gc.result
|
||||
call void @foo()
|
||||
ret void
|
||||
}
|
||||
|
||||
declare zeroext i1 @i1_return_i1(i1)
|
||||
|
||||
define i1 @test_call_with_result() gc "statepoint-example" {
|
||||
; CHECK-LABEL: test_call_with_result
|
||||
; This is checking that a statepoint_poll + statepoint + result is
|
||||
; inserted for a function that takes 1 argument.
|
||||
; CHECK: gc.statepoint.p0f_isVoidf
|
||||
; CHECK: gc.statepoint.p0f_i1i1f
|
||||
; CHECK: (i1 (i1)* @i1_return_i1, i32 1, i32 0, i1 false, i32 0)
|
||||
; CHECK: gc.result.i1
|
||||
entry:
|
||||
%call1 = tail call i1 (i1)* @i1_return_i1(i1 false)
|
||||
ret i1 %call1
|
||||
}
|
||||
|
||||
; This function is inlined when inserting a poll. To avoid recursive
|
||||
; issues, make sure we don't place safepoints in it.
|
||||
|
Loading…
Reference in New Issue
Block a user