[clang] [llvm] [mlir] [CIR] Expand callee-side va_arg on x86_64 (PR #222420)

Adam Smith via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 15 09:58:51 PDT 2026


================
@@ -1059,6 +980,48 @@ void rewriteIndirectReturnCall(cir::CallOp call,
   call->erase();
 }
 
+/// Whether \p ty is an eightbyte that travels in a vector register.  An x87
+/// long double is floating-point but travels in neither register class, so it
+/// is excluded.  A caller reads a false result as the integer class.
+bool isSSERegisterClass(mlir::Type ty) {
----------------
adams381 wrote:

I've made an update to the classifier to give us exactly what we need.  It was previously computed and thrown away.  I've made a small interface to give us exactly what we need.  `ArgInfo` and `ArgClassification` now carry the `NeededInt` and `NeededSSE` the classifier already computes and was throwing away, so `fitsOneVectorSlot`, `isWide128BitInt` and the whole register reconstruction chain are gone.

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


More information about the cfe-commits mailing list