summaryrefslogtreecommitdiff
path: root/user/rust/0014-Fix-double_check-tests-on-big-endian-targets.patch
diff options
context:
space:
mode:
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.patch75
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
+