================ @@ -303,14 +305,23 @@ const CIRGenFunctionInfo &CIRGenTypes::arrangeCIRFunctionInfo() { assert(!cir::MissingFeatures::opCallCallConv()); // Construction the function info. We co-allocate the ArgInfos. - fi = CIRGenFunctionInfo::create(); + fi = CIRGenFunctionInfo::create(returnType); functionInfos.InsertNode(fi, insertPos); bool inserted = functionsBeingProcessed.insert(fi).second; (void)inserted; assert(inserted && "Are functions being processed recursively?"); assert(!cir::MissingFeatures::opCallCallConv()); + getABIInfo().computeInfo(*fi); + + // Loop over all of the computed argument and return value info. If any of + // them are direct or extend without a specified coerce type, specify the + // default now. + cir::ABIArgInfo &retInfo = fi->getReturnInfo(); + if (retInfo.canHaveCoerceToType() && retInfo.getCoerceToType() == nullptr) + retInfo.setCoerceToType(convertType(fi->getReturnType())); + ---------------- erichkeane wrote:
I see we return this by reference below... so this is leaked... Or am I missing something? There is something goofy happening here that I'm misunderstanding perhaps.... @AaronBallman / @efriedma-quic / @rjmccall : Is there something we're not doing right here, that classic-CodeGen does, or does that leak these too? Or am I missing something? https://github.com/llvm/llvm-project/pull/135552 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits