================ @@ -1455,6 +1462,64 @@ struct SwitchCoroutineSplitter { setCoroInfo(F, Shape, Clones); } + static Function *createNoAllocVariant(Function &F, coro::Shape &Shape, + SmallVectorImpl<Function *> &Clones) { + auto *OrigFnTy = F.getFunctionType(); + auto OldParams = OrigFnTy->params(); + + SmallVector<Type *> NewParams; + NewParams.reserve(OldParams.size() + 1); + for (Type *T : OldParams) { + NewParams.push_back(T); + } + NewParams.push_back(PointerType::getUnqual(Shape.FrameTy)); + + auto *NewFnTy = FunctionType::get(OrigFnTy->getReturnType(), NewParams, + OrigFnTy->isVarArg()); + Function *NoAllocF = + Function::Create(NewFnTy, F.getLinkage(), F.getName() + ".noalloc"); ---------------- vogelsgesang wrote:
Intuitively, I would think so, yes. But I never looked into ThinLTO before, so I don't know for sure. Does #99285 enable `CoroAnnotationElide` already for ThinLTO? https://github.com/llvm/llvm-project/pull/99283 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits