33 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-split,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 don't call bar at all. 12; CHECK-NOT: call void @bar{{.*}}13 call void @bar() coro_elide_safe14; CHECK: call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr @bar.resumers)15 ret void16}17 18; CHECK-LABEL: define void @bar()19define void @bar() presplitcoroutine personality ptr null {20entry:21 %0 = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null)22 %1 = call ptr @llvm.coro.begin(token %0, ptr null)23 %2 = call token @llvm.coro.save(ptr null)24 %3 = call i8 @llvm.coro.suspend(token none, i1 false)25 ret void26}27 28declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) nounwind29declare ptr @llvm.coro.begin(token, ptr writeonly) nounwind30declare token @llvm.coro.save(ptr) nomerge nounwind31declare i8 @llvm.coro.suspend(token, i1) nounwind32 33