[clang] [CIR] Emit calling convention on call sites (PR #230123)

Konstantinos Parasyris via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 8 13:50:09 PDT 2026


================
@@ -1405,9 +1402,9 @@ RValue CIRGenFunction::emitCall(const CIRGenFunctionInfo &funcInfo,
   bool isInvoke = !cannotThrow && isCatchOrCleanupRequired();
 
   mlir::Location callLoc = loc;
-  cir::CIRCallOpInterface theCall =
-      emitCallLikeOp(*this, loc, indirectFuncTy, indirectFuncVal, directFuncOp,
-                     cirCallArgs, isInvoke, attrs, argAttrs, retAttrs);
+  cir::CIRCallOpInterface theCall = emitCallLikeOp(
+      *this, loc, indirectFuncTy, indirectFuncVal, directFuncOp, cirCallArgs,
+      isInvoke, attrs, argAttrs, retAttrs, callingConv);
----------------
koparasy wrote:

Yes, the CIRGen side was already in place #214246 . We do not support all conventions though (see [here](https://github.com/llvm/llvm-project/pull/214246/changes#diff-5f0346826915728e1229a091e99e710480e9582b06a66f5ecac4070bef959068R757)) . I have kept the errors there since we will start having other issues since ABI support for non  `CallingConv::C` ([here](https://github.com/llvm/llvm-project/blob/91dd66078a9321096e9de21ba035dedffe0a6c8a/llvm/lib/ABI/Targets/X86.cpp#L1327-L1340)) is missing.

As is now, AFAIU these work for these [conventions](https://github.com/llvm/llvm-project/blob/254f05a4807997ae410e157f1673c8c26020a88c/clang/include/clang/CIR/Dialect/IR/CIROps.td#L4234-L4240)

For all the reasons above I think either the scope of this PR will explode or we should leave other conventions (with their testing for some other PR later)

https://github.com/llvm/llvm-project/pull/230123


More information about the cfe-commits mailing list