From 94543ed21325120c86cde3267306272b519be3f7 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Sun, 16 Sep 2018 16:37:58 +0000 Subject: [PATCH 20/28] Fix double_check tests on big-endian targets Since the enums get optimized down to 1 byte long, the bits set in the usize member don't align with the enums on big-endian machines. Avoid this issue by shrinking the integer member to the same size as the enums. --- src/test/ui/const-eval/double_check.rs | 8 ++++---- src/test/ui/const-eval/double_check2.rs | 8 ++++---- src/test/ui/const-eval/double_check2.stderr | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/test/ui/const-eval/double_check.rs b/src/test/ui/const-eval/double_check.rs index 81f6e7ddd2..76f9276c05 100644 --- a/src/test/ui/const-eval/double_check.rs +++ b/src/test/ui/const-eval/double_check.rs @@ -21,12 +21,12 @@ enum Bar { union Union { foo: &'static Foo, bar: &'static Bar, - usize: &'static usize, + u8: &'static u8, } -static BAR: usize = 42; +static BAR: u8 = 42; static FOO: (&Foo, &Bar) = unsafe {( - Union { usize: &BAR }.foo, - Union { usize: &BAR }.bar, + Union { u8: &BAR }.foo, + Union { u8: &BAR }.bar, )}; fn main() {} diff --git a/src/test/ui/const-eval/double_check2.rs b/src/test/ui/const-eval/double_check2.rs index b661ee9247..701632362c 100644 --- a/src/test/ui/const-eval/double_check2.rs +++ b/src/test/ui/const-eval/double_check2.rs @@ -19,12 +19,12 @@ enum Bar { union Union { foo: &'static Foo, bar: &'static Bar, - usize: &'static usize, + u8: &'static u8, } -static BAR: usize = 5; +static BAR: u8 = 5; static FOO: (&Foo, &Bar) = unsafe {( //~ undefined behavior - Union { usize: &BAR }.foo, - Union { usize: &BAR }.bar, + Union { u8: &BAR }.foo, + Union { u8: &BAR }.bar, )}; fn main() {} diff --git a/src/test/ui/const-eval/double_check2.stderr b/src/test/ui/const-eval/double_check2.stderr index 2a0a674e23..d0f44a627b 100644 --- a/src/test/ui/const-eval/double_check2.stderr +++ b/src/test/ui/const-eval/double_check2.stderr @@ -2,8 +2,8 @@ error[E0080]: this static likely exhibits undefined behavior --> $DIR/double_check2.rs:25:1 | LL | / static FOO: (&Foo, &Bar) = unsafe {( //~ undefined behavior -LL | | Union { usize: &BAR }.foo, -LL | | Union { usize: &BAR }.bar, +LL | | Union { u8: &BAR }.foo, +LL | | Union { u8: &BAR }.bar, LL | | )}; | |___^ type validation failed: encountered 5 at (*.1).TAG, but expected something in the range 42..=99 | -- 2.18.0