Author: Weibo He Date: 2026-03-30T12:23:44+08:00 New Revision: 24e9bc774cf128e5c06cce5e97a78b0f4e75af2a
URL: https://github.com/llvm/llvm-project/commit/24e9bc774cf128e5c06cce5e97a78b0f4e75af2a DIFF: https://github.com/llvm/llvm-project/commit/24e9bc774cf128e5c06cce5e97a78b0f4e75af2a.diff LOG: Revert "[CoroSplit] Erase trivially dead allocas after spilling" (#189311) I think I forgot to update the FrameData after erasing. I'll check it locally. Reverts llvm/llvm-project#189295 Added: Modified: clang/test/CodeGenCoroutines/coro-suspend-cleanups.cpp llvm/lib/Transforms/Coroutines/CoroFrame.cpp llvm/test/Transforms/Coroutines/coro-await-suspend-lower-invoke.ll llvm/test/Transforms/Coroutines/coro-await-suspend-lower.ll llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll Removed: ################################################################################ diff --git a/clang/test/CodeGenCoroutines/coro-suspend-cleanups.cpp b/clang/test/CodeGenCoroutines/coro-suspend-cleanups.cpp index 5872a75b26de5..77abc53ce2e71 100644 --- a/clang/test/CodeGenCoroutines/coro-suspend-cleanups.cpp +++ b/clang/test/CodeGenCoroutines/coro-suspend-cleanups.cpp @@ -39,6 +39,8 @@ coroutine ArrayInitCoro() { // - We activate the cleanup after the first element and deactivate it in await.ready (see cleanup.isactive). // CHECK-LABEL: define dso_local void @_Z13ArrayInitCorov + // CHECK: %arrayinit.endOfInit = alloca ptr, align 8 + // CHECK: %cleanup.isactive = alloca i1, align 1 Printy arr[2] = { Printy("a"), // CHECK: store i1 true, ptr %cleanup.isactive.reload.addr, align 1 diff --git a/llvm/lib/Transforms/Coroutines/CoroFrame.cpp b/llvm/lib/Transforms/Coroutines/CoroFrame.cpp index 96dad79374160..83b40ee927b51 100644 --- a/llvm/lib/Transforms/Coroutines/CoroFrame.cpp +++ b/llvm/lib/Transforms/Coroutines/CoroFrame.cpp @@ -1212,9 +1212,6 @@ static void insertSpills(const FrameDataInfo &FrameData, coro::Shape &Shape) { for (Instruction *I : UsersToUpdate) I->replaceUsesOfWith(Alloca, G); - - if (Alloca->user_empty()) - Alloca->eraseFromParent(); } Builder.SetInsertPoint(&*Shape.getInsertPtAfterFramePtr()); for (const auto &A : FrameData.Allocas) { diff --git a/llvm/test/Transforms/Coroutines/coro-await-suspend-lower-invoke.ll b/llvm/test/Transforms/Coroutines/coro-await-suspend-lower-invoke.ll index 87309042f18bf..78540d9363cc6 100644 --- a/llvm/test/Transforms/Coroutines/coro-await-suspend-lower-invoke.ll +++ b/llvm/test/Transforms/Coroutines/coro-await-suspend-lower-invoke.ll @@ -105,6 +105,7 @@ declare noalias ptr @malloc(i32) declare void @free(ptr) ; CHECK-LABEL: define void @f() personality i32 0 { ; CHECK-NEXT: [[ENTRY:.*:]] +; CHECK-NEXT: [[AWAITER:%.*]] = alloca [[AWAITER:%.*]], align 8 ; CHECK-NEXT: [[ID:%.*]] = call token @llvm.coro.id(i32 0, ptr null, ptr @f, ptr @f.resumers) ; CHECK-NEXT: [[ALLOC:%.*]] = call ptr @malloc(i32 24) ; CHECK-NEXT: [[HDL:%.*]] = call noalias nonnull ptr @llvm.coro.begin(token [[ID]], ptr [[ALLOC]]) diff --git a/llvm/test/Transforms/Coroutines/coro-await-suspend-lower.ll b/llvm/test/Transforms/Coroutines/coro-await-suspend-lower.ll index bb3fa099de763..d6c93cad08a90 100644 --- a/llvm/test/Transforms/Coroutines/coro-await-suspend-lower.ll +++ b/llvm/test/Transforms/Coroutines/coro-await-suspend-lower.ll @@ -82,6 +82,7 @@ declare noalias ptr @malloc(i32) declare void @free(ptr) ; CHECK-LABEL: define void @f() { ; CHECK-NEXT: [[ENTRY:.*:]] +; CHECK-NEXT: [[AWAITER:%.*]] = alloca [[AWAITER:%.*]], align 8 ; CHECK-NEXT: [[ID:%.*]] = call token @llvm.coro.id(i32 0, ptr null, ptr @f, ptr @f.resumers) ; CHECK-NEXT: [[ALLOC:%.*]] = call ptr @malloc(i32 24) ; CHECK-NEXT: [[HDL:%.*]] = call noalias nonnull ptr @llvm.coro.begin(token [[ID]], ptr [[ALLOC]]) diff --git a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll index 4cacbcf402adf..2ebd52328de52 100644 --- a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll +++ b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll @@ -105,6 +105,7 @@ declare void @llvm.lifetime.end.p0(ptr nocapture) #4 ; CHECK-SAME: ) #[[ATTR0:[0-9]+]] { ; CHECK-NEXT: [[ENTRY:.*:]] ; CHECK-NEXT: [[REF_TMP7:%.*]] = alloca %"struct.lean_future<int>::Awaiter", align 8 +; CHECK-NEXT: [[TESTVAL:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[ID:%.*]] = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr @a_optnone.resumers) ; CHECK-NEXT: [[ALLOC:%.*]] = call ptr @malloc(i64 16) ; CHECK-NEXT: [[VFRAME:%.*]] = call noalias nonnull ptr @llvm.coro.begin(token [[ID]], ptr [[ALLOC]]) _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
