mirror of https://github.com/rust-lang/rust
287 lines
7.0 KiB
Rust
287 lines
7.0 KiB
Rust
// MIR for `main` after built
|
|
|
|
| User Type Annotations
|
|
| 0: user_ty: Canonical { value: TypeOf(DefId(0:3 ~ issue_99325[d56d]::function_with_bytes), UserArgs { args: [&*b"AAAA"], user_self_ty: None }), max_universe: U0, variables: [], defining_opaque_types: [] }, span: $DIR/issue_99325.rs:13:16: 13:46, inferred_ty: fn() -> &'static [u8] {function_with_bytes::<&*b"AAAA">}
|
|
| 1: user_ty: Canonical { value: TypeOf(DefId(0:3 ~ issue_99325[d56d]::function_with_bytes), UserArgs { args: [UnevaluatedConst { def: DefId(0:8 ~ issue_99325[d56d]::main::{constant#1}), args: [] }], user_self_ty: None }), max_universe: U0, variables: [], defining_opaque_types: [] }, span: $DIR/issue_99325.rs:14:16: 14:68, inferred_ty: fn() -> &'static [u8] {function_with_bytes::<&*b"AAAA">}
|
|
|
|
|
fn main() -> () {
|
|
let mut _0: ();
|
|
let _1: ();
|
|
let mut _2: (&&[u8], &&[u8; 4]);
|
|
let mut _3: &&[u8];
|
|
let _4: &[u8];
|
|
let mut _5: &&[u8; 4];
|
|
let _6: &[u8; 4];
|
|
let _7: [u8; 4];
|
|
let _8: &&[u8];
|
|
let _9: &&[u8; 4];
|
|
let mut _10: bool;
|
|
let mut _11: &&[u8];
|
|
let mut _12: &&[u8; 4];
|
|
let mut _13: !;
|
|
let _15: !;
|
|
let mut _16: core::panicking::AssertKind;
|
|
let mut _17: &&[u8];
|
|
let _18: &&[u8];
|
|
let mut _19: &&[u8; 4];
|
|
let _20: &&[u8; 4];
|
|
let mut _21: std::option::Option<std::fmt::Arguments<'_>>;
|
|
let _22: ();
|
|
let mut _23: (&&[u8], &&[u8; 4]);
|
|
let mut _24: &&[u8];
|
|
let _25: &[u8];
|
|
let mut _26: &&[u8; 4];
|
|
let _27: &[u8; 4];
|
|
let _28: &&[u8];
|
|
let _29: &&[u8; 4];
|
|
let mut _30: bool;
|
|
let mut _31: &&[u8];
|
|
let mut _32: &&[u8; 4];
|
|
let mut _33: !;
|
|
let _35: !;
|
|
let mut _36: core::panicking::AssertKind;
|
|
let mut _37: &&[u8];
|
|
let _38: &&[u8];
|
|
let mut _39: &&[u8; 4];
|
|
let _40: &&[u8; 4];
|
|
let mut _41: std::option::Option<std::fmt::Arguments<'_>>;
|
|
scope 1 {
|
|
debug left_val => _8;
|
|
debug right_val => _9;
|
|
let _14: core::panicking::AssertKind;
|
|
scope 2 {
|
|
debug kind => _14;
|
|
}
|
|
}
|
|
scope 3 {
|
|
debug left_val => _28;
|
|
debug right_val => _29;
|
|
let _34: core::panicking::AssertKind;
|
|
scope 4 {
|
|
debug kind => _34;
|
|
}
|
|
}
|
|
|
|
bb0: {
|
|
StorageLive(_1);
|
|
StorageLive(_2);
|
|
StorageLive(_3);
|
|
StorageLive(_4);
|
|
_4 = function_with_bytes::<&*b"AAAA">() -> [return: bb1, unwind: bb23];
|
|
}
|
|
|
|
bb1: {
|
|
_3 = &_4;
|
|
StorageLive(_5);
|
|
StorageLive(_6);
|
|
StorageLive(_7);
|
|
_7 = [const 65_u8, const 65_u8, const 65_u8, const 65_u8];
|
|
_6 = &_7;
|
|
_5 = &_6;
|
|
_2 = (move _3, move _5);
|
|
StorageDead(_5);
|
|
StorageDead(_3);
|
|
PlaceMention(_2);
|
|
StorageLive(_8);
|
|
_8 = copy (_2.0: &&[u8]);
|
|
StorageLive(_9);
|
|
_9 = copy (_2.1: &&[u8; 4]);
|
|
StorageLive(_10);
|
|
StorageLive(_11);
|
|
_11 = &(*_8);
|
|
StorageLive(_12);
|
|
_12 = &(*_9);
|
|
_10 = <&[u8] as PartialEq<&[u8; 4]>>::eq(move _11, move _12) -> [return: bb3, unwind: bb23];
|
|
}
|
|
|
|
bb2: {
|
|
FakeRead(ForMatchedPlace(None), _2);
|
|
unreachable;
|
|
}
|
|
|
|
bb3: {
|
|
switchInt(move _10) -> [0: bb5, otherwise: bb4];
|
|
}
|
|
|
|
bb4: {
|
|
StorageDead(_12);
|
|
StorageDead(_11);
|
|
goto -> bb9;
|
|
}
|
|
|
|
bb5: {
|
|
goto -> bb6;
|
|
}
|
|
|
|
bb6: {
|
|
StorageDead(_12);
|
|
StorageDead(_11);
|
|
StorageLive(_14);
|
|
_14 = core::panicking::AssertKind::Eq;
|
|
FakeRead(ForLet(None), _14);
|
|
StorageLive(_15);
|
|
StorageLive(_16);
|
|
_16 = move _14;
|
|
StorageLive(_17);
|
|
StorageLive(_18);
|
|
_18 = &(*_8);
|
|
_17 = &(*_18);
|
|
StorageLive(_19);
|
|
StorageLive(_20);
|
|
_20 = &(*_9);
|
|
_19 = &(*_20);
|
|
StorageLive(_21);
|
|
_21 = Option::<Arguments<'_>>::None;
|
|
_15 = core::panicking::assert_failed::<&[u8], &[u8; 4]>(move _16, move _17, move _19, move _21) -> bb23;
|
|
}
|
|
|
|
bb7: {
|
|
StorageDead(_21);
|
|
StorageDead(_19);
|
|
StorageDead(_17);
|
|
StorageDead(_16);
|
|
StorageDead(_20);
|
|
StorageDead(_18);
|
|
StorageDead(_15);
|
|
StorageDead(_14);
|
|
unreachable;
|
|
}
|
|
|
|
bb8: {
|
|
goto -> bb10;
|
|
}
|
|
|
|
bb9: {
|
|
_1 = const ();
|
|
goto -> bb10;
|
|
}
|
|
|
|
bb10: {
|
|
StorageDead(_10);
|
|
StorageDead(_9);
|
|
StorageDead(_8);
|
|
goto -> bb11;
|
|
}
|
|
|
|
bb11: {
|
|
StorageDead(_7);
|
|
StorageDead(_6);
|
|
StorageDead(_4);
|
|
StorageDead(_2);
|
|
StorageDead(_1);
|
|
StorageLive(_22);
|
|
StorageLive(_23);
|
|
StorageLive(_24);
|
|
StorageLive(_25);
|
|
_25 = function_with_bytes::<&*b"AAAA">() -> [return: bb12, unwind: bb23];
|
|
}
|
|
|
|
bb12: {
|
|
_24 = &_25;
|
|
StorageLive(_26);
|
|
StorageLive(_27);
|
|
_27 = const b"AAAA";
|
|
_26 = &_27;
|
|
_23 = (move _24, move _26);
|
|
StorageDead(_26);
|
|
StorageDead(_24);
|
|
PlaceMention(_23);
|
|
StorageLive(_28);
|
|
_28 = copy (_23.0: &&[u8]);
|
|
StorageLive(_29);
|
|
_29 = copy (_23.1: &&[u8; 4]);
|
|
StorageLive(_30);
|
|
StorageLive(_31);
|
|
_31 = &(*_28);
|
|
StorageLive(_32);
|
|
_32 = &(*_29);
|
|
_30 = <&[u8] as PartialEq<&[u8; 4]>>::eq(move _31, move _32) -> [return: bb14, unwind: bb23];
|
|
}
|
|
|
|
bb13: {
|
|
FakeRead(ForMatchedPlace(None), _23);
|
|
unreachable;
|
|
}
|
|
|
|
bb14: {
|
|
switchInt(move _30) -> [0: bb16, otherwise: bb15];
|
|
}
|
|
|
|
bb15: {
|
|
StorageDead(_32);
|
|
StorageDead(_31);
|
|
goto -> bb20;
|
|
}
|
|
|
|
bb16: {
|
|
goto -> bb17;
|
|
}
|
|
|
|
bb17: {
|
|
StorageDead(_32);
|
|
StorageDead(_31);
|
|
StorageLive(_34);
|
|
_34 = core::panicking::AssertKind::Eq;
|
|
FakeRead(ForLet(None), _34);
|
|
StorageLive(_35);
|
|
StorageLive(_36);
|
|
_36 = move _34;
|
|
StorageLive(_37);
|
|
StorageLive(_38);
|
|
_38 = &(*_28);
|
|
_37 = &(*_38);
|
|
StorageLive(_39);
|
|
StorageLive(_40);
|
|
_40 = &(*_29);
|
|
_39 = &(*_40);
|
|
StorageLive(_41);
|
|
_41 = Option::<Arguments<'_>>::None;
|
|
_35 = core::panicking::assert_failed::<&[u8], &[u8; 4]>(move _36, move _37, move _39, move _41) -> bb23;
|
|
}
|
|
|
|
bb18: {
|
|
StorageDead(_41);
|
|
StorageDead(_39);
|
|
StorageDead(_37);
|
|
StorageDead(_36);
|
|
StorageDead(_40);
|
|
StorageDead(_38);
|
|
StorageDead(_35);
|
|
StorageDead(_34);
|
|
unreachable;
|
|
}
|
|
|
|
bb19: {
|
|
goto -> bb21;
|
|
}
|
|
|
|
bb20: {
|
|
_22 = const ();
|
|
goto -> bb21;
|
|
}
|
|
|
|
bb21: {
|
|
StorageDead(_30);
|
|
StorageDead(_29);
|
|
StorageDead(_28);
|
|
goto -> bb22;
|
|
}
|
|
|
|
bb22: {
|
|
StorageDead(_27);
|
|
StorageDead(_25);
|
|
StorageDead(_23);
|
|
StorageDead(_22);
|
|
_0 = const ();
|
|
return;
|
|
}
|
|
|
|
bb23 (cleanup): {
|
|
resume;
|
|
}
|
|
}
|
|
|
|
ALLOC0 (size: 4, align: 1) {
|
|
41 41 41 41 │ AAAA
|
|
}
|