[clang] [mlir] [CIR] Lower variadic calls in CallConvLowering for x86_64 (PR #213315)

Adam Smith via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 3 16:58:18 PDT 2026


================
@@ -321,17 +321,38 @@ convertABIArgInfo(const llvm::abi::ArgInfo &info, MLIRContext *ctx,
   return ArgClassification::getIgnore();
 }
 
+/// The number of leading arguments the classifier must treat as declared
+/// parameters, which is meaningful only for a variadic signature: an argument
+/// past the ellipsis is unnamed, and the x86_64 rules pass some unnamed types
+/// differently.  std::nullopt for a non-variadic signature, where every
----------------
adams381 wrote:

I agree that this is confusing and I don't like it. I did an implementation like `CGFunctionInfo` (and `CIRGenFunctionInfo`) that is local to this pass. At least this way we have the explanation of what the special case means.

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


More information about the cfe-commits mailing list