brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 839b24c Raw
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