Skip to content

Commit 44d8367

Browse files
committed
Revert "[Coroutines][new pass manager] Move CoroElide pass to right position"
This reverts commit 4c0a133.
1 parent 4c0a133 commit 44d8367

File tree

3 files changed

+5
-25
lines changed

3 files changed

+5
-25
lines changed

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -561,9 +561,6 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,
561561
EnableMSSALoopDependency, DebugLogging));
562562
}
563563

564-
if (PTO.Coroutines)
565-
FPM.addPass(CoroElidePass());
566-
567564
for (auto &C : ScalarOptimizerLateEPCallbacks)
568565
C(FPM, Level);
569566

@@ -850,8 +847,10 @@ PassBuilder::buildModuleSimplificationPipeline(OptimizationLevel Level,
850847

851848
MainCGPipeline.addPass(AttributorCGSCCPass());
852849

853-
if (PTO.Coroutines)
850+
if (PTO.Coroutines) {
854851
MainCGPipeline.addPass(CoroSplitPass());
852+
MainCGPipeline.addPass(createCGSCCToFunctionPassAdaptor(CoroElidePass()));
853+
}
855854

856855
// Now deduce any function attributes based in the current code.
857856
MainCGPipeline.addPass(PostOrderFunctionAttrsPass());

llvm/test/Transforms/Coroutines/ex2.ll

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,8 @@ entry:
4040
%hdl = call i8* @f(i32 4)
4141
call void @llvm.coro.resume(i8* %hdl)
4242
call void @llvm.coro.resume(i8* %hdl)
43-
%to = icmp eq i8* %hdl, null
44-
br i1 %to, label %return, label %destroy
45-
destroy:
4643
call void @llvm.coro.destroy(i8* %hdl)
47-
br label %return
48-
return:
4944
ret i32 0
50-
; CHECK-NOT: call i8* @CustomAlloc
5145
; CHECK: call void @print(i32 4)
5246
; CHECK-NEXT: call void @print(i32 5)
5347
; CHECK-NEXT: call void @print(i32 6)

llvm/test/Transforms/Coroutines/ex3.ll

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,11 @@ define i8* @f(i32 %n) {
66
entry:
77
%id = call token @llvm.coro.id(i32 0, i8* null, i8* null, i8* null)
88
%size = call i32 @llvm.coro.size.i32()
9-
%need.dyn.alloc = call i1 @llvm.coro.alloc(token %id)
10-
br i1 %need.dyn.alloc, label %dyn.alloc, label %coro.begin
11-
dyn.alloc:
129
%alloc = call i8* @malloc(i32 %size)
13-
br label %coro.begin
14-
coro.begin:
15-
%phi = phi i8* [ null, %entry ], [ %alloc, %dyn.alloc ]
16-
%hdl = call noalias i8* @llvm.coro.begin(token %id, i8* %phi)
10+
%hdl = call noalias i8* @llvm.coro.begin(token %id, i8* %alloc)
1711
br label %loop
1812
loop:
19-
%n.val = phi i32 [ %n, %coro.begin ], [ %inc, %loop.resume ]
13+
%n.val = phi i32 [ %n, %entry ], [ %inc, %loop.resume ]
2014
call void @print(i32 %n.val) #4
2115
%0 = call i8 @llvm.coro.suspend(token none, i1 false)
2216
switch i8 %0, label %suspend [i8 0, label %loop.resume
@@ -43,15 +37,8 @@ entry:
4337
%hdl = call i8* @f(i32 4)
4438
call void @llvm.coro.resume(i8* %hdl)
4539
call void @llvm.coro.resume(i8* %hdl)
46-
%c = ptrtoint i8* %hdl to i64
47-
%to = icmp eq i64 %c, 0
48-
br i1 %to, label %return, label %destroy
49-
destroy:
5040
call void @llvm.coro.destroy(i8* %hdl)
51-
br label %return
52-
return:
5341
ret i32 0
54-
; CHECK-NOT: i8* @malloc
5542
; CHECK: call void @print(i32 4)
5643
; CHECK-NEXT: call void @print(i32 -5)
5744
; CHECK-NEXT: call void @print(i32 5)

0 commit comments

Comments
 (0)