67 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=rewrite-statepoints-for-gc < %s | FileCheck %s3 4declare void @f()5declare i32 @personality_function()6 7define void @test_id() gc "statepoint-example" personality ptr @personality_function {8; CHECK-LABEL: @test_id(9; CHECK-NEXT: entry:10; CHECK-NEXT: [[STATEPOINT_TOKEN:%.*]] = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 100, i32 0, ptr elementtype(void ()) @f, i32 0, i32 0, i32 0, i32 0)11; CHECK-NEXT: to label [[NORMAL_RETURN:%.*]] unwind label [[EXCEPTIONAL_RETURN:%.*]]12; CHECK: normal_return:13; CHECK-NEXT: ret void14; CHECK: exceptional_return:15; CHECK-NEXT: [[LANDING_PAD4:%.*]] = landingpad { ptr, i32 }16; CHECK-NEXT: cleanup17; CHECK-NEXT: ret void18;19entry:20 invoke void @f() "statepoint-id"="100" to label %normal_return unwind label %exceptional_return21 22normal_return:23 ret void24 25exceptional_return:26 %landing_pad4 = landingpad {ptr, i32} cleanup27 ret void28}29 30define void @test_num_patch_bytes() gc "statepoint-example" personality ptr @personality_function {31; CHECK-LABEL: @test_num_patch_bytes(32; CHECK-NEXT: entry:33; CHECK-NEXT: [[STATEPOINT_TOKEN:%.*]] = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 99, ptr elementtype(void ()) @f, i32 0, i32 0, i32 0, i32 0)34; CHECK-NEXT: to label [[NORMAL_RETURN:%.*]] unwind label [[EXCEPTIONAL_RETURN:%.*]]35; CHECK: normal_return:36; CHECK-NEXT: ret void37; CHECK: exceptional_return:38; CHECK-NEXT: [[LANDING_PAD4:%.*]] = landingpad { ptr, i32 }39; CHECK-NEXT: cleanup40; CHECK-NEXT: ret void41;42entry:43 invoke void @f() "statepoint-num-patch-bytes"="99" to label %normal_return unwind label %exceptional_return44 45normal_return:46 ret void47 48exceptional_return:49 %landing_pad4 = landingpad {ptr, i32} cleanup50 ret void51}52 53declare void @do_safepoint()54define void @gc.safepoint_poll() {55; CHECK-LABEL: @gc.safepoint_poll(56; CHECK-NEXT: entry:57; CHECK-NEXT: call void @do_safepoint()58; CHECK-NEXT: ret void59;60entry:61 call void @do_safepoint()62 ret void63}64 65; CHECK-NOT: statepoint-id66; CHECK-NOT: statepoint-num-patch_bytes67