[llvm] r228625 - PlaceSafepoints: modernize gc.result.* -> gc.result
Ramkumar Ramachandra
artagnon at gmail.com
Mon Feb 9 15:00:41 PST 2015
Author: artagnon
Date: Mon Feb 9 17:00:40 2015
New Revision: 228625
URL: http://llvm.org/viewvc/llvm-project?rev=228625&view=rev
Log:
PlaceSafepoints: modernize gc.result.* -> gc.result
Differential Revision: http://reviews.llvm.org/D7516
Modified:
llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp
llvm/trunk/test/Transforms/PlaceSafepoints/basic.ll
Modified: llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp?rev=228625&r1=228624&r2=228625&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp Mon Feb 9 17:00:40 2015
@@ -952,18 +952,7 @@ static Value *ReplaceWithStatepoint(cons
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;
Modified: llvm/trunk/test/Transforms/PlaceSafepoints/basic.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PlaceSafepoints/basic.ll?rev=228625&r1=228624&r2=228625&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/PlaceSafepoints/basic.ll (original)
+++ llvm/trunk/test/Transforms/PlaceSafepoints/basic.ll Mon Feb 9 17:00:40 2015
@@ -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.
More information about the llvm-commits
mailing list