rust/src/test/run-pass/issue-1112.rs
Brian Anderson 61b604580b Fix alignment of interior pointers of dynamic-size types. Closes #1112
GEP_tup_like finds interior pointers by creating a tuple of all the types
preceding the element it wants a pointer to, then asks for the size of that
tuple. This results in incorrect pointers when the alignment of that tuple
is not the alignment of the interior type you're getting a pointer to.
2011-11-01 12:13:00 -07:00

37 lines
548 B
Rust

// Issue #1112
// Alignment of interior pointers to dynamic-size types
use std;
import std::ptr::addr_of;
type x<T> = {
a: T,
b: u8,
c: bool,
d: u8,
e: u16,
f: u8,
g: u8
};
fn main() {
let x: x<int> = {
a: 12345678,
b: 9u8,
c: true,
d: 10u8,
e: 11u16,
f: 12u8,
g: 13u8
};
bar(x);
}
fn bar<T>(x: x<T>) {
assert x.b == 9u8;
assert x.c == true;
assert x.d == 10u8;
assert x.e == 11u16;
assert x.f == 12u8;
assert x.g == 13u8;
}