diff options
Diffstat (limited to 'user/rust/0014-Fix-double_check-tests-on-big-endian-targets.patch')
-rw-r--r-- | user/rust/0014-Fix-double_check-tests-on-big-endian-targets.patch | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/user/rust/0014-Fix-double_check-tests-on-big-endian-targets.patch b/user/rust/0014-Fix-double_check-tests-on-big-endian-targets.patch new file mode 100644 index 000000000..632f0c456 --- /dev/null +++ b/user/rust/0014-Fix-double_check-tests-on-big-endian-targets.patch @@ -0,0 +1,75 @@ +From 2a347ba6131fa5b1eedb3236fe25a6ca25842e19 Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Sun, 16 Sep 2018 18:27:56 +0000 +Subject: [PATCH 14/24] 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.<deref> + | +-- +2.18.0 + |