Skip to content

Commit 9b95e91

Browse files
committed
rustc_trans: ignore trailing padding larger than 8 bytes.
1 parent da569fa commit 9b95e91

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

src/librustc_trans/cabi_x86_64.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -179,12 +179,12 @@ fn cast_target(cls: &[Class], size: Size) -> CastTarget {
179179
let mut i = 0;
180180
let lo = reg_component(cls, &mut i, size).unwrap();
181181
let offset = Size::from_bytes(8) * (i as u64);
182-
let target = if size <= offset {
183-
CastTarget::from(lo)
184-
} else {
185-
let hi = reg_component(cls, &mut i, size - offset).unwrap();
186-
CastTarget::Pair(lo, hi)
187-
};
182+
let mut target = CastTarget::from(lo);
183+
if size > offset {
184+
if let Some(hi) = reg_component(cls, &mut i, size - offset) {
185+
target = CastTarget::Pair(lo, hi);
186+
}
187+
}
188188
assert_eq!(reg_component(cls, &mut i, Size::from_bytes(0)), None);
189189
target
190190
}

src/test/run-pass/align-with-extern-c-fn.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414
#![feature(attr_literals)]
1515

1616
#[repr(align(16))]
17-
pub struct A {
18-
y: i64,
19-
}
17+
pub struct A(i64);
2018

2119
pub extern "C" fn foo(x: A) {}
2220

23-
fn main() {}
21+
fn main() {
22+
foo(A(0));
23+
}

0 commit comments

Comments
 (0)