From cdcbabdffce7f1b5379faf96db0dc12e4a5f1a36 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Sun, 16 Sep 2018 18:27:56 +0000 Subject: [PATCH 13/23] 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/consts/const-eval/double_check.rs | 8 ++++---- src/test/ui/consts/const-eval/double_check2.rs | 8 ++++---- src/test/ui/consts/const-eval/double_check2.stderr | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/test/ui/consts/const-eval/double_check.rs b/src/test/ui/consts/const-eval/double_check.rs index 81f6e7ddd2..76f9276c05 100644 --- a/src/test/ui/consts/const-eval/double_check.rs +++ b/src/test/ui/consts/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/consts/const-eval/double_check2.rs b/src/test/ui/consts/const-eval/double_check2.rs index b661ee9247..701632362c 100644 --- a/src/test/ui/consts/const-eval/double_check2.rs +++ b/src/test/ui/consts/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/consts/const-eval/double_check2.stderr b/src/test/ui/consts/const-eval/double_check2.stderr index 2102587734..78a112304e 100644 --- a/src/test/ui/consts/const-eval/double_check2.stderr +++ b/src/test/ui/consts/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 invalid enum discriminant 5 at .1. | -- 2.19.2