Rollup merge of #106046 - uweigand:s390x-test-bigendian-mir, r=Mark-Simulacrum

Fix mir-opt tests for big-endian platforms

The test cases src/test/mir-opt/building/custom/consts.rs and src/test/mir-opt/const_prop/mutable_variable_no_prop.rs are currently failing on big-endian platforms as the binary encoding of some constants is hard-coded in the MIR test files.  Fix this by choosing constant values that have the same encoding on big- and little-endian platforms.

The test case src/test/mir-opt/issues/issue_75439.rs is failing as well, but since the purpose of the test is to validate handling of big-endian integer encodings on a little-endian platform, it does not make much sense to run it on big-endian platforms in the first place - we can just ignore it there.

Fixed part of https://github.com/rust-lang/rust/issues/105383.
This commit is contained in:
Matthias Krüger 2023-01-14 13:04:23 +01:00 committed by GitHub
commit 47fa7faf76
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 9 additions and 8 deletions

View File

@ -18,8 +18,8 @@ fn consts<const C: u32>() {
})
}
static S: i32 = 5;
static mut T: i32 = 10;
static S: i32 = 0x05050505;
static mut T: i32 = 0x0a0a0a0a;
// EMIT_MIR consts.statics.built.after.mir
#[custom_mir(dialect = "built")]
fn statics() {

View File

@ -19,9 +19,9 @@ fn statics() -> () {
}
alloc2 (static: T, size: 4, align: 4) {
0a 00 00 00 ....
0a 0a 0a 0a ....
}
alloc1 (static: S, size: 4, align: 4) {
05 00 00 00 ....
05 05 05 05 ....
}

View File

@ -38,6 +38,6 @@
}
alloc1 (static: STATIC, size: 4, align: 4) {
2a 00 00 00 │ *...
42 42 42 42 │ BBBB
}

View File

@ -1,7 +1,7 @@
// unit-test
// compile-flags: -O
static mut STATIC: u32 = 42;
static mut STATIC: u32 = 0x42424242;
// EMIT_MIR mutable_variable_no_prop.main.ConstProp.diff
fn main() {

View File

@ -26,7 +26,7 @@
_3 = _1; // scope 2 at $DIR/issue_75439.rs:+2:47: +2:52
_2 = transmute::<[u8; 16], [u32; 4]>(move _3) -> bb1; // scope 2 at $DIR/issue_75439.rs:+2:37: +2:53
// mir::Constant
// + span: $DIR/issue_75439.rs:7:37: 7:46
// + span: $DIR/issue_75439.rs:8:37: 8:46
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn([u8; 16]) -> [u32; 4] {transmute::<[u8; 16], [u32; 4]>}, val: Value(<ZST>) }
}
@ -49,7 +49,7 @@
_6 = _4; // scope 4 at $DIR/issue_75439.rs:+5:33: +5:35
_5 = transmute::<u32, [u8; 4]>(move _6) -> bb7; // scope 4 at $DIR/issue_75439.rs:+5:23: +5:36
// mir::Constant
// + span: $DIR/issue_75439.rs:10:23: 10:32
// + span: $DIR/issue_75439.rs:11:23: 11:32
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(u32) -> [u8; 4] {transmute::<u32, [u8; 4]>}, val: Value(<ZST>) }
}

View File

@ -1,4 +1,5 @@
// EMIT_MIR issue_75439.foo.MatchBranchSimplification.diff
// ignore-endian-big
use std::mem::transmute;