From 7fde9717f931034968bda23b76e0833e8c437e4e Mon Sep 17 00:00:00 2001 From: 40u5 Date: Tue, 31 Mar 2026 12:49:57 -0400 Subject: [PATCH 1/2] Use pointee_align when storing sized indirect arguments, matching cg_llvm behavior --- src/intrinsic/mod.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/intrinsic/mod.rs b/src/intrinsic/mod.rs index 1e8d5c2d19f..8adb3fdadcd 100644 --- a/src/intrinsic/mod.rs +++ b/src/intrinsic/mod.rs @@ -734,8 +734,9 @@ impl<'gcc, 'tcx> ArgAbiExt<'gcc, 'tcx> for ArgAbi<'tcx, Ty<'tcx>> { if self.is_ignore() { return; } - if self.is_sized_indirect() { - OperandValue::Ref(PlaceValue::new_sized(val, self.layout.align.abi)).store(bx, dst) + if let PassMode::Indirect { attrs, meta_attrs: None, .. } = &self.mode { + let align = attrs.pointee_align.unwrap_or(self.layout.align.abi); + OperandValue::Ref(PlaceValue::new_sized(val, align)).store(bx, dst) } else if self.is_unsized_indirect() { bug!("unsized `ArgAbi` cannot be stored"); } else if let PassMode::Cast { ref cast, .. } = self.mode { From d8749074fcccaa177418ade27b83d7ea10319806 Mon Sep 17 00:00:00 2001 From: 40u5 Date: Tue, 31 Mar 2026 17:10:49 -0400 Subject: [PATCH 2/2] Fix clippy::pattern_type_mismatch by using ref binding instead of matching on reference --- src/intrinsic/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/intrinsic/mod.rs b/src/intrinsic/mod.rs index 8adb3fdadcd..719b99f604f 100644 --- a/src/intrinsic/mod.rs +++ b/src/intrinsic/mod.rs @@ -734,7 +734,7 @@ impl<'gcc, 'tcx> ArgAbiExt<'gcc, 'tcx> for ArgAbi<'tcx, Ty<'tcx>> { if self.is_ignore() { return; } - if let PassMode::Indirect { attrs, meta_attrs: None, .. } = &self.mode { + if let PassMode::Indirect { ref attrs, meta_attrs: None, .. } = self.mode { let align = attrs.pointee_align.unwrap_or(self.layout.align.abi); OperandValue::Ref(PlaceValue::new_sized(val, align)).store(bx, dst) } else if self.is_unsized_indirect() {