Skip to content

Commit

Permalink
PlaceSafepoints: modernize gc.result.* -> gc.result
Browse files Browse the repository at this point in the history
Differential Revision: http://reviews.llvm.org/D7516

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228625 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
artagnon committed Feb 9, 2015
1 parent 99cc7e5 commit 69a5c89
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 13 deletions.
13 changes: 1 addition & 12 deletions lib/Transforms/Scalar/PlaceSafepoints.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
17 changes: 16 additions & 1 deletion test/Transforms/PlaceSafepoints/basic.ll
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 69a5c89

Please sign in to comment.