@@ -482,39 +482,38 @@ static void addCallToCallGraph(CallGraph *CG, CallInst *Call, Function *Callee){
482482
483483Value *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
520519void coro::Shape::emitDealloc (IRBuilder<> &Builder, Value *Ptr,
0 commit comments