@@ -523,39 +523,38 @@ static void addCallToCallGraph(CallGraph *CG, CallInst *Call, Function *Callee){
523
523
524
524
Value *coro::Shape::emitAlloc (IRBuilder<> &Builder, Value *Size,
525
525
CallGraph *CG) const {
526
- unsigned sizeParamIndex = UINT_MAX;
527
526
switch (ABI) {
528
527
case coro::ABI::Switch:
529
528
llvm_unreachable (" can't allocate memory in coro switch-lowering" );
530
529
531
530
case coro::ABI::Retcon:
532
531
case coro::ABI::RetconOnce:
533
- sizeParamIndex = 0 ;
534
- break ;
535
- case coro::ABI::RetconOnceDynamic:
536
- sizeParamIndex = 1 ;
537
- break ;
532
+ case coro::ABI::RetconOnceDynamic: {
533
+ unsigned sizeParamIndex = 0 ;
534
+ SmallVector<Value *, 2 > Args;
535
+ if (ABI == coro::ABI::RetconOnceDynamic) {
536
+ sizeParamIndex = 1 ;
537
+ Args.push_back (RetconLowering.Allocator );
538
+ }
539
+ auto Alloc = RetconLowering.Alloc ;
540
+ Size = Builder.CreateIntCast (
541
+ Size, Alloc->getFunctionType ()->getParamType (sizeParamIndex),
542
+ /* is signed*/ false );
543
+ Args.push_back (Size);
544
+ if (ABI == coro::ABI::RetconOnce) {
545
+ ConstantInt *TypeId = RetconLowering.TypeId ;
546
+ if (TypeId != nullptr )
547
+ Args.push_back (TypeId);
548
+ }
549
+ auto *Call = Builder.CreateCall (Alloc, Args);
550
+ propagateCallAttrsFromCallee (Call, Alloc);
551
+ addCallToCallGraph (CG, Call, Alloc);
552
+ return Call;
553
+ }
538
554
case coro::ABI::Async:
539
555
llvm_unreachable (" can't allocate memory in coro async-lowering" );
540
556
}
541
- auto Alloc = RetconLowering.Alloc ;
542
- Size = Builder.CreateIntCast (
543
- Size, Alloc->getFunctionType ()->getParamType (sizeParamIndex),
544
- /* is signed*/ false );
545
- SmallVector<Value *, 2 > Args;
546
- if (ABI == coro::ABI::RetconOnceDynamic) {
547
- Args.push_back (RetconLowering.Allocator );
548
- }
549
- Args.push_back (Size);
550
- if (ABI == coro::ABI::RetconOnce) {
551
- ConstantInt *TypeId = RetconLowering.TypeId ;
552
- if (TypeId != nullptr )
553
- Args.push_back (TypeId);
554
- }
555
- auto *Call = Builder.CreateCall (Alloc, Args);
556
- propagateCallAttrsFromCallee (Call, Alloc);
557
- addCallToCallGraph (CG, Call, Alloc);
558
- return Call;
557
+ llvm_unreachable (" Unknown coro::ABI enum" );
559
558
}
560
559
561
560
void coro::Shape::emitDealloc (IRBuilder<> &Builder, Value *Ptr,
0 commit comments