diff --git a/src/intrinsic/mod.rs b/src/intrinsic/mod.rs index 1e8d5c2d19f..719b99f604f 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 { 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() { bug!("unsized `ArgAbi` cannot be stored"); } else if let PassMode::Cast { ref cast, .. } = self.mode {