|
20 | 20 | store i8* %2, i8** %coro_hdl, align 8, !dbg !16
|
21 | 21 | %3 = call i8 @llvm.coro.suspend(token none, i1 false), !dbg !17
|
22 | 22 | %conv = sext i8 %3 to i32, !dbg !17
|
| 23 | + %late_local = alloca i32, align 4 |
23 | 24 | call void @coro.devirt.trigger(i8* null)
|
24 | 25 | switch i32 %conv, label %sw.default [
|
25 | 26 | i32 0, label %sw.bb
|
@@ -57,6 +58,7 @@ coro_Cleanup: ; preds = %sw.epilog, %sw.bb1
|
57 | 58 | coro_Suspend: ; preds = %coro_Cleanup, %sw.default
|
58 | 59 | %7 = call i1 @llvm.coro.end(i8* null, i1 false) #7, !dbg !24
|
59 | 60 | %8 = load i8*, i8** %coro_hdl, align 8, !dbg !24
|
| 61 | + store i32 0, i32* %late_local, !dbg !24 |
60 | 62 | ret i8* %8, !dbg !24
|
61 | 63 | }
|
62 | 64 |
|
@@ -147,6 +149,8 @@ attributes #7 = { noduplicate }
|
147 | 149 | ; CHECK: store %f.Frame* {{.*}}, %f.Frame** %[[DBG_PTR]]
|
148 | 150 | ; CHECK-NOT: alloca %struct.test*
|
149 | 151 | ; CHECK: call void @llvm.dbg.declare(metadata i32 0, metadata ![[RESUME_CONST:[0-9]+]], metadata !DIExpression())
|
| 152 | +; Note that keeping the undef value here could be acceptable, too. |
| 153 | +; CHECK-NOT: call void @llvm.dbg.declare(metadata i32* undef, metadata !{{[0-9]+}}, metadata !DIExpression()) |
150 | 154 | ; CHECK: call void @coro.devirt.trigger(i8* null)
|
151 | 155 | ; CHECK: define internal fastcc void @f.destroy(%f.Frame* noalias nonnull align 8 dereferenceable(32) %FramePtr) #0 !dbg ![[DESTROY:[0-9]+]]
|
152 | 156 | ; CHECK: define internal fastcc void @f.cleanup(%f.Frame* noalias nonnull align 8 dereferenceable(32) %FramePtr) #0 !dbg ![[CLEANUP:[0-9]+]]
|
|
0 commit comments