brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · a8bc956 Raw
34 lines · plain
1; Verify that we don't crash when eliding coro_elide_safe callsites.2; RUN: opt < %s -passes='cgscc(function<>(simplifycfg<>),function-attrs,coro-annotation-elide)'  -S | FileCheck %s3 4; CHECK-LABEL: define void @foo()5define void @foo() presplitcoroutine personality ptr null {6entry:7  %0 = call token @llvm.coro.save(ptr null)8  br label %branch9 10branch:11; Check that we still call bar() because we can't inline bar.noalloc()12; CHECK: call void @bar()13  call void @bar() coro_elide_safe14  ret void15}16 17; CHECK-LABEL: define void @bar()18define void @bar() personality ptr null {19entry:20  %0 = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null)21  %1 = call ptr @llvm.coro.begin(token %0, ptr null)22  %2 = call token @llvm.coro.save(ptr null)23  %3 = call i8 @llvm.coro.suspend(token none, i1 false)24  ret void25}26 27declare void @bar.noalloc(ptr)28 29declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) nounwind30declare ptr @llvm.coro.begin(token, ptr writeonly) nounwind31declare token @llvm.coro.save(ptr) nomerge nounwind32declare i8 @llvm.coro.suspend(token, i1) nounwind33 34