@@ -482,39 +482,38 @@ static void addCallToCallGraph(CallGraph *CG, CallInst *Call, Function *Callee){
482
482
483
483
Value *coro::Shape::emitAlloc (IRBuilder<> &Builder, Value *Size,
484
484
CallGraph *CG) const {
485
- unsigned sizeParamIndex = UINT_MAX;
486
485
switch (ABI) {
487
486
case coro::ABI::Switch:
488
487
llvm_unreachable (" can't allocate memory in coro switch-lowering" );
489
488
490
489
case coro::ABI::Retcon:
491
490
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
+ }
497
513
case coro::ABI::Async:
498
514
llvm_unreachable (" can't allocate memory in coro async-lowering" );
499
515
}
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" );
518
517
}
519
518
520
519
void coro::Shape::emitDealloc (IRBuilder<> &Builder, Value *Ptr,
0 commit comments