diff --git a/src/test/run-pass/tag-align-dyn-u64.rs b/src/test/run-pass/tag-align-dyn-u64.rs index a50711fc98d..8d8d4caad24 100644 --- a/src/test/run-pass/tag-align-dyn-u64.rs +++ b/src/test/run-pass/tag-align-dyn-u64.rs @@ -8,9 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-linux #7340 fails on 32-bit Linux -// ignore-macos #7340 fails on 32-bit macos - use std::mem; enum Tag { @@ -26,12 +23,13 @@ fn mk_rec() -> Rec { return Rec { c8:0, t:Tag::Tag2(0) }; } -fn is_8_byte_aligned(u: &Tag) -> bool { +fn is_u64_aligned(u: &Tag) -> bool { let p: uint = unsafe { mem::transmute(u) }; - return (p & 7) == 0; + let u64_align = std::mem::min_align_of::(); + return (p & (u64_align - 1)) == 0; } pub fn main() { let x = mk_rec(); - assert!(is_8_byte_aligned(&x.t)); + assert!(is_u64_aligned(&x.t)); } diff --git a/src/test/run-pass/tag-align-dyn-variants.rs b/src/test/run-pass/tag-align-dyn-variants.rs index 69af882e1fa..917f2c5b374 100644 --- a/src/test/run-pass/tag-align-dyn-variants.rs +++ b/src/test/run-pass/tag-align-dyn-variants.rs @@ -8,9 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-linux #7340 fails on 32-bit Linux -// ignore-macos #7340 fails on 32-bit macos - use std::mem; enum Tag { @@ -42,33 +39,34 @@ fn variant_data_is_aligned(amnt: uint, u: &Tag) -> bool { } pub fn main() { - let x = mk_rec(22, 23); - assert!(is_aligned(8, &x.tA)); - assert!(variant_data_is_aligned(8, &x.tA)); - assert!(is_aligned(8, &x.tB)); - assert!(variant_data_is_aligned(8, &x.tB)); + let u64_align = std::mem::min_align_of::(); + let x = mk_rec(22u64, 23u64); + assert!(is_aligned(u64_align, &x.tA)); + assert!(variant_data_is_aligned(u64_align, &x.tA)); + assert!(is_aligned(u64_align, &x.tB)); + assert!(variant_data_is_aligned(u64_align, &x.tB)); - let x = mk_rec(22, 23); - assert!(is_aligned(8, &x.tA)); - assert!(variant_data_is_aligned(8, &x.tA)); - assert!(is_aligned(8, &x.tB)); + let x = mk_rec(22u64, 23u32); + assert!(is_aligned(u64_align, &x.tA)); + assert!(variant_data_is_aligned(u64_align, &x.tA)); + assert!(is_aligned(u64_align, &x.tB)); assert!(variant_data_is_aligned(4, &x.tB)); - let x = mk_rec(22, 23); - assert!(is_aligned(8, &x.tA)); + let x = mk_rec(22u32, 23u64); + assert!(is_aligned(u64_align, &x.tA)); assert!(variant_data_is_aligned(4, &x.tA)); - assert!(is_aligned(8, &x.tB)); - assert!(variant_data_is_aligned(8, &x.tB)); + assert!(is_aligned(u64_align, &x.tB)); + assert!(variant_data_is_aligned(u64_align, &x.tB)); - let x = mk_rec(22, 23); + let x = mk_rec(22u32, 23u32); assert!(is_aligned(4, &x.tA)); assert!(variant_data_is_aligned(4, &x.tA)); assert!(is_aligned(4, &x.tB)); assert!(variant_data_is_aligned(4, &x.tB)); let x = mk_rec(22f64, 23f64); - assert!(is_aligned(8, &x.tA)); - assert!(variant_data_is_aligned(8, &x.tA)); - assert!(is_aligned(8, &x.tB)); - assert!(variant_data_is_aligned(8, &x.tB)); + assert!(is_aligned(u64_align, &x.tA)); + assert!(variant_data_is_aligned(u64_align, &x.tA)); + assert!(is_aligned(u64_align, &x.tB)); + assert!(variant_data_is_aligned(u64_align, &x.tB)); } diff --git a/src/test/run-pass/tag-align-u64.rs b/src/test/run-pass/tag-align-u64.rs index e5fd11ff9db..df99d77142c 100644 --- a/src/test/run-pass/tag-align-u64.rs +++ b/src/test/run-pass/tag-align-u64.rs @@ -8,9 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// ignore-linux #7340 fails on 32-bit Linux -// ignore-macos #7340 fails on 32-bit macos - use std::mem; enum Tag { @@ -26,12 +23,13 @@ fn mk_rec() -> Rec { return Rec { c8:0, t:Tag::TagInner(0) }; } -fn is_8_byte_aligned(u: &Tag) -> bool { +fn is_u64_aligned(u: &Tag) -> bool { let p: uint = unsafe { mem::transmute(u) }; - return (p & 7) == 0; + let u64_align = std::mem::min_align_of::(); + return (p & (u64_align - 1)) == 0; } pub fn main() { let x = mk_rec(); - assert!(is_8_byte_aligned(&x.t)); + assert!(is_u64_aligned(&x.t)); }