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

Reply via email to