Skip to content

Commit 82d3bcd

Browse files
committed
[NFC] Coro: Re-cover this switch.
It became uncovered in #10120 . Fix that here.
1 parent d9449c9 commit 82d3bcd

File tree

1 file changed

+23
-24
lines changed

1 file changed

+23
-24
lines changed

llvm/lib/Transforms/Coroutines/Coroutines.cpp

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -482,39 +482,38 @@ static void addCallToCallGraph(CallGraph *CG, CallInst *Call, Function *Callee){
482482

483483
Value *coro::Shape::emitAlloc(IRBuilder<> &Builder, Value *Size,
484484
CallGraph *CG) const {
485-
unsigned sizeParamIndex = UINT_MAX;
486485
switch (ABI) {
487486
case coro::ABI::Switch:
488487
llvm_unreachable("can't allocate memory in coro switch-lowering");
489488

490489
case coro::ABI::Retcon:
491490
case coro::ABI::RetconOnce:
492-
sizeParamIndex = 0;
493-
break;
494-
case coro::ABI::RetconOnceDynamic:
495-
sizeParamIndex = 1;
496-
break;
491+
case coro::ABI::RetconOnceDynamic: {
492+
unsigned sizeParamIndex = 0;
493+
SmallVector<Value *, 2> Args;
494+
if (ABI == coro::ABI::RetconOnceDynamic) {
495+
sizeParamIndex = 1;
496+
Args.push_back(RetconLowering.Allocator);
497+
}
498+
auto Alloc = RetconLowering.Alloc;
499+
Size = Builder.CreateIntCast(
500+
Size, Alloc->getFunctionType()->getParamType(sizeParamIndex),
501+
/*is signed*/ false);
502+
Args.push_back(Size);
503+
if (ABI == coro::ABI::RetconOnce) {
504+
ConstantInt *TypeId = RetconLowering.TypeId;
505+
if (TypeId != nullptr)
506+
Args.push_back(TypeId);
507+
}
508+
auto *Call = Builder.CreateCall(Alloc, Args);
509+
propagateCallAttrsFromCallee(Call, Alloc);
510+
addCallToCallGraph(CG, Call, Alloc);
511+
return Call;
512+
}
497513
case coro::ABI::Async:
498514
llvm_unreachable("can't allocate memory in coro async-lowering");
499515
}
500-
auto Alloc = RetconLowering.Alloc;
501-
Size = Builder.CreateIntCast(
502-
Size, Alloc->getFunctionType()->getParamType(sizeParamIndex),
503-
/*is signed*/ false);
504-
SmallVector<Value *, 2> Args;
505-
if (ABI == coro::ABI::RetconOnceDynamic) {
506-
Args.push_back(RetconLowering.Allocator);
507-
}
508-
Args.push_back(Size);
509-
if (ABI == coro::ABI::RetconOnce) {
510-
ConstantInt *TypeId = RetconLowering.TypeId;
511-
if (TypeId != nullptr)
512-
Args.push_back(TypeId);
513-
}
514-
auto *Call = Builder.CreateCall(Alloc, Args);
515-
propagateCallAttrsFromCallee(Call, Alloc);
516-
addCallToCallGraph(CG, Call, Alloc);
517-
return Call;
516+
llvm_unreachable("Unknown coro::ABI enum");
518517
}
519518

520519
void coro::Shape::emitDealloc(IRBuilder<> &Builder, Value *Ptr,

0 commit comments

Comments
 (0)