[clang] [CIR] cir.call with scalar return type (PR #135552)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 15 14:10:34 PDT 2025
================
@@ -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
More information about the cfe-commits
mailing list