Skip to content

Conversation

@ShoyuVanilla
Copy link
Member

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Dec 22, 2025
@ShoyuVanilla
Copy link
Member Author

@bors try

@rust-bors

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Dec 22, 2025
[DO NOT MERGE] User lt param always experiment
@rust-log-analyzer
Copy link
Collaborator

The job x86_64-gnu-gcc failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)

---- [mir-opt] tests/mir-opt/address_of.rs stdout ----
2 
3 | User Type Annotations
4 | 0: user_ty: Canonical { value: Ty(*const ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:8:10: 8:18, inferred_ty: *const [i32; 10]
- | 1: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:10:10: 10:25, inferred_ty: *const dyn std::marker::Send
- | 2: user_ty: Canonical { value: Ty(*const ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:14:12: 14:20, inferred_ty: *const [i32; 10]
- | 3: user_ty: Canonical { value: Ty(*const ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:14:12: 14:20, inferred_ty: *const [i32; 10]
- | 4: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:15:12: 15:28, inferred_ty: *const [i32; 10]
- | 5: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:15:12: 15:28, inferred_ty: *const [i32; 10]
- | 6: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:16:12: 16:27, inferred_ty: *const dyn std::marker::Send
- | 7: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:16:12: 16:27, inferred_ty: *const dyn std::marker::Send
- | 8: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:17:12: 17:24, inferred_ty: *const [i32]
- | 9: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:17:12: 17:24, inferred_ty: *const [i32]
- | 10: user_ty: Canonical { value: Ty(*const ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:19:10: 19:18, inferred_ty: *const [i32; 10]
- | 11: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:21:10: 21:25, inferred_ty: *const dyn std::marker::Send
- | 12: user_ty: Canonical { value: Ty(*const ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:24:12: 24:20, inferred_ty: *const [i32; 10]
- | 13: user_ty: Canonical { value: Ty(*const ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:24:12: 24:20, inferred_ty: *const [i32; 10]
- | 14: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:25:12: 25:28, inferred_ty: *const [i32; 10]
- | 15: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:25:12: 25:28, inferred_ty: *const [i32; 10]
- | 16: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:26:12: 26:27, inferred_ty: *const dyn std::marker::Send
- | 17: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:26:12: 26:27, inferred_ty: *const dyn std::marker::Send
- | 18: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:27:12: 27:24, inferred_ty: *const [i32]
- | 19: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:27:12: 27:24, inferred_ty: *const [i32]
- | 20: user_ty: Canonical { value: Ty(*mut ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:29:10: 29:16, inferred_ty: *mut [i32; 10]
- | 21: user_ty: Canonical { value: Ty(*mut dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:31:10: 31:23, inferred_ty: *mut dyn std::marker::Send
- | 22: user_ty: Canonical { value: Ty(*mut ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:34:12: 34:18, inferred_ty: *mut [i32; 10]
- | 23: user_ty: Canonical { value: Ty(*mut ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:34:12: 34:18, inferred_ty: *mut [i32; 10]
- | 24: user_ty: Canonical { value: Ty(*mut [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:35:12: 35:26, inferred_ty: *mut [i32; 10]
- | 25: user_ty: Canonical { value: Ty(*mut [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:35:12: 35:26, inferred_ty: *mut [i32; 10]
- | 26: user_ty: Canonical { value: Ty(*mut dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:36:12: 36:25, inferred_ty: *mut dyn std::marker::Send
- | 27: user_ty: Canonical { value: Ty(*mut dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:36:12: 36:25, inferred_ty: *mut dyn std::marker::Send
- | 28: user_ty: Canonical { value: Ty(*mut [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:37:12: 37:22, inferred_ty: *mut [i32]
- | 29: user_ty: Canonical { value: Ty(*mut [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:37:12: 37:22, inferred_ty: *mut [i32]
+ | 1: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:9:10: 9:26, inferred_ty: *const [i32; 10]
+ | 2: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:10:10: 10:25, inferred_ty: *const dyn std::marker::Send
+ | 3: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:11:10: 11:22, inferred_ty: *const [i32]
+ | 4: user_ty: Canonical { value: Ty(*const i32), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:12:10: 12:20, inferred_ty: *const i32
+ | 5: user_ty: Canonical { value: Ty(*const ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:14:12: 14:20, inferred_ty: *const [i32; 10]
+ | 6: user_ty: Canonical { value: Ty(*const ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:14:12: 14:20, inferred_ty: *const [i32; 10]
+ | 7: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:15:12: 15:28, inferred_ty: *const [i32; 10]
+ | 8: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:15:12: 15:28, inferred_ty: *const [i32; 10]
+ | 9: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:16:12: 16:27, inferred_ty: *const dyn std::marker::Send
+ | 10: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:16:12: 16:27, inferred_ty: *const dyn std::marker::Send
+ | 11: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:17:12: 17:24, inferred_ty: *const [i32]
+ | 12: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:17:12: 17:24, inferred_ty: *const [i32]
+ | 13: user_ty: Canonical { value: Ty(*const ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:19:10: 19:18, inferred_ty: *const [i32; 10]
+ | 14: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:20:10: 20:26, inferred_ty: *const [i32; 10]
+ | 15: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:21:10: 21:25, inferred_ty: *const dyn std::marker::Send
+ | 16: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:22:10: 22:22, inferred_ty: *const [i32]
+ | 17: user_ty: Canonical { value: Ty(*const ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:24:12: 24:20, inferred_ty: *const [i32; 10]
+ | 18: user_ty: Canonical { value: Ty(*const ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:24:12: 24:20, inferred_ty: *const [i32; 10]
+ | 19: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:25:12: 25:28, inferred_ty: *const [i32; 10]
+ | 20: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:25:12: 25:28, inferred_ty: *const [i32; 10]
+ | 21: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:26:12: 26:27, inferred_ty: *const dyn std::marker::Send
+ | 22: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:26:12: 26:27, inferred_ty: *const dyn std::marker::Send
+ | 23: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:27:12: 27:24, inferred_ty: *const [i32]
+ | 24: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:27:12: 27:24, inferred_ty: *const [i32]
+ | 25: user_ty: Canonical { value: Ty(*mut ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:29:10: 29:16, inferred_ty: *mut [i32; 10]
+ | 26: user_ty: Canonical { value: Ty(*mut [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:30:10: 30:24, inferred_ty: *mut [i32; 10]
+ | 27: user_ty: Canonical { value: Ty(*mut dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:31:10: 31:23, inferred_ty: *mut dyn std::marker::Send
+ | 28: user_ty: Canonical { value: Ty(*mut [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:32:10: 32:20, inferred_ty: *mut [i32]
+ | 29: user_ty: Canonical { value: Ty(*mut ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:34:12: 34:18, inferred_ty: *mut [i32; 10]
+ | 30: user_ty: Canonical { value: Ty(*mut ^c_0), max_universe: U0, variables: [Ty { ui: U0, sub_root: 0 }] }, span: $DIR/address_of.rs:34:12: 34:18, inferred_ty: *mut [i32; 10]
+ | 31: user_ty: Canonical { value: Ty(*mut [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:35:12: 35:26, inferred_ty: *mut [i32; 10]
+ | 32: user_ty: Canonical { value: Ty(*mut [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:35:12: 35:26, inferred_ty: *mut [i32; 10]
+ | 33: user_ty: Canonical { value: Ty(*mut dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:36:12: 36:25, inferred_ty: *mut dyn std::marker::Send
+ | 34: user_ty: Canonical { value: Ty(*mut dyn std::marker::Send), max_universe: U0, variables: [Region(U0)] }, span: $DIR/address_of.rs:36:12: 36:25, inferred_ty: *mut dyn std::marker::Send
+ | 35: user_ty: Canonical { value: Ty(*mut [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:37:12: 37:22, inferred_ty: *mut [i32]
+ | 36: user_ty: Canonical { value: Ty(*mut [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:37:12: 37:22, inferred_ty: *mut [i32]
34 |
35 fn address_of_reborrow() -> () {
36     let mut _0: ();

40     let _5: *const [i32; 10];
---
+     let _26: *const [i32; 10];
+     let mut _27: *const [i32; 10];
+     let _28: *const dyn std::marker::Send;
+     let mut _29: *const dyn std::marker::Send;
+     let mut _30: *const [i32; 10];
+     let _31: *const [i32];
+     let mut _32: *const [i32];
+     let mut _33: *const [i32; 10];
+     let mut _37: *const [i32; 10];
+     let mut _39: *const [i32; 10];
+     let _40: *mut [i32; 10];
+     let mut _41: *mut [i32; 10];
+     let _42: *mut [i32; 10];
+     let mut _43: *mut [i32; 10];
+     let _44: *mut dyn std::marker::Send;
+     let mut _45: *mut dyn std::marker::Send;
70     let mut _46: *mut [i32; 10];
-     let mut _48: *mut [i32; 10];
+     let _47: *mut [i32];
+     let mut _48: *mut [i32];
+     let mut _49: *mut [i32; 10];
+     let mut _53: *mut [i32; 10];
+     let mut _55: *mut [i32; 10];
72     scope 1 {
73         debug y => _1;
74         let mut _3: &mut [i32; 10];

75         scope 2 {
76             debug z => _3;
-             let _15: *const [i32; 10] as UserTypeProjection { base: UserType(2), projs: [] };
+             let _18: *const [i32; 10] as UserTypeProjection { base: UserType(5), projs: [] };
78             scope 3 {
-                 debug p => _15;
-                 let _16: *const [i32; 10] as UserTypeProjection { base: UserType(4), projs: [] };
+                 debug p => _18;
+                 let _19: *const [i32; 10] as UserTypeProjection { base: UserType(7), projs: [] };
81                 scope 4 {
-                     debug p => _16;
-                     let _17: *const dyn std::marker::Send as UserTypeProjection { base: UserType(6), projs: [] };
+                     debug p => _19;
+                     let _20: *const dyn std::marker::Send as UserTypeProjection { base: UserType(9), projs: [] };
84                     scope 5 {
-                         debug p => _17;
-                         let _19: *const [i32] as UserTypeProjection { base: UserType(8), projs: [] };
+                         debug p => _20;
+                         let _22: *const [i32] as UserTypeProjection { base: UserType(11), projs: [] };
87                         scope 6 {
-                             debug p => _19;
-                             let _29: *const [i32; 10] as UserTypeProjection { base: UserType(12), projs: [] };
+                             debug p => _22;
+                             let _34: *const [i32; 10] as UserTypeProjection { base: UserType(17), projs: [] };
90                             scope 7 {
-                                 debug p => _29;
-                                 let _30: *const [i32; 10] as UserTypeProjection { base: UserType(14), projs: [] };
+                                 debug p => _34;
+                                 let _35: *const [i32; 10] as UserTypeProjection { base: UserType(19), projs: [] };
93                                 scope 8 {
-                                     debug p => _30;
-                                     let _31: *const dyn std::marker::Send as UserTypeProjection { base: UserType(16), projs: [] };
+                                     debug p => _35;
+                                     let _36: *const dyn std::marker::Send as UserTypeProjection { base: UserType(21), projs: [] };
96                                     scope 9 {
-                                         debug p => _31;
-                                         let _33: *const [i32] as UserTypeProjection { base: UserType(18), projs: [] };
+                                         debug p => _36;
+                                         let _38: *const [i32] as UserTypeProjection { base: UserType(23), projs: [] };
99                                         scope 10 {
-                                             debug p => _33;
-                                             let _43: *mut [i32; 10] as UserTypeProjection { base: UserType(22), projs: [] };
+                                             debug p => _38;
+                                             let _50: *mut [i32; 10] as UserTypeProjection { base: UserType(29), projs: [] };
102                                             scope 11 {
-                                                 debug p => _43;
-                                                 let _44: *mut [i32; 10] as UserTypeProjection { base: UserType(24), projs: [] };
+                                                 debug p => _50;
+                                                 let _51: *mut [i32; 10] as UserTypeProjection { base: UserType(31), projs: [] };
105                                                 scope 12 {
-                                                     debug p => _44;
-                                                     let _45: *mut dyn std::marker::Send as UserTypeProjection { base: UserType(26), projs: [] };
+                                                     debug p => _51;
+                                                     let _52: *mut dyn std::marker::Send as UserTypeProjection { base: UserType(33), projs: [] };
108                                                     scope 13 {
-                                                         debug p => _45;
-                                                         let _47: *mut [i32] as UserTypeProjection { base: UserType(28), projs: [] };
+                                                         debug p => _52;
+                                                         let _54: *mut [i32] as UserTypeProjection { base: UserType(35), projs: [] };
111                                                         scope 14 {
-                                                             debug p => _47;
+                                                             debug p => _54;
113                                                         }
114                                                     }
115                                                 }

144         StorageDead(_6);
145         StorageDead(_5);
146         StorageLive(_7);
-         _7 = &raw const (*_1);
-         StorageDead(_7);
149         StorageLive(_8);
+         _8 = &raw const (*_1);
+         AscribeUserType(_8, o, UserTypeProjection { base: UserType(1), projs: [] });
+         _7 = copy _8;
+         StorageDead(_8);
+         StorageDead(_7);
150         StorageLive(_9);
151         StorageLive(_10);
-         _10 = &raw const (*_1);
-         _9 = move _10 as *const dyn std::marker::Send (PointerCoercion(Unsize, AsCast));
+         StorageLive(_11);
+         _11 = &raw const (*_1);
+         _10 = move _11 as *const dyn std::marker::Send (PointerCoercion(Unsize, AsCast));
+         StorageDead(_11);
+         AscribeUserType(_10, o, UserTypeProjection { base: UserType(2), projs: [] });
+         _9 = copy _10;
154         StorageDead(_10);
-         AscribeUserType(_9, o, UserTypeProjection { base: UserType(1), projs: [] });
-         _8 = copy _9;
157         StorageDead(_9);
-         StorageDead(_8);
-         StorageLive(_11);
160         StorageLive(_12);
-         _12 = &raw const (*_1);
-         _11 = move _12 as *const [i32] (PointerCoercion(Unsize, AsCast));
-         StorageDead(_12);
-         StorageDead(_11);
165         StorageLive(_13);
166         StorageLive(_14);
167         _14 = &raw const (*_1);

-         _13 = move _14 as *const i32 (PointerCoercion(ArrayToPointer, AsCast));
+         _13 = move _14 as *const [i32] (PointerCoercion(Unsize, AsCast));
169         StorageDead(_14);
+         AscribeUserType(_13, o, UserTypeProjection { base: UserType(3), projs: [] });
+         _12 = copy _13;
170         StorageDead(_13);
+         StorageDead(_12);
171         StorageLive(_15);
-         _15 = &raw const (*_1);
-         FakeRead(ForLet(None), _15);
-         AscribeUserType(_15, o, UserTypeProjection { base: UserType(3), projs: [] });
175         StorageLive(_16);
-         _16 = &raw const (*_1);
-         FakeRead(ForLet(None), _16);
-         AscribeUserType(_16, o, UserTypeProjection { base: UserType(5), projs: [] });
179         StorageLive(_17);
+         _17 = &raw const (*_1);
+         _16 = move _17 as *const i32 (PointerCoercion(ArrayToPointer, AsCast));
+         AscribeUserType(_16, o, UserTypeProjection { base: UserType(4), projs: [] });
+         _15 = copy _16;
+         StorageDead(_17);
+         StorageDead(_16);
+         StorageDead(_15);
180         StorageLive(_18);
181         _18 = &raw const (*_1);
-         _17 = move _18 as *const dyn std::marker::Send (PointerCoercion(Unsize, Implicit));
-         StorageDead(_18);
-         FakeRead(ForLet(None), _17);
-         AscribeUserType(_17, o, UserTypeProjection { base: UserType(7), projs: [] });
+         FakeRead(ForLet(None), _18);
+         AscribeUserType(_18, o, UserTypeProjection { base: UserType(6), projs: [] });
186         StorageLive(_19);
-         StorageLive(_20);
-         _20 = &raw const (*_1);
-         _19 = move _20 as *const [i32] (PointerCoercion(Unsize, Implicit));
-         StorageDead(_20);
+         _19 = &raw const (*_1);
191         FakeRead(ForLet(None), _19);
-         AscribeUserType(_19, o, UserTypeProjection { base: UserType(9), projs: [] });
+         AscribeUserType(_19, o, UserTypeProjection { base: UserType(8), projs: [] });
+         StorageLive(_20);
193         StorageLive(_21);
-         StorageLive(_22);
-         _22 = &raw const (*_3);
-         AscribeUserType(_22, o, UserTypeProjection { base: UserType(10), projs: [] });
-         _21 = copy _22;
-         StorageDead(_22);
+         _21 = &raw const (*_1);
+         _20 = move _21 as *const dyn std::marker::Send (PointerCoercion(Unsize, Implicit));
199         StorageDead(_21);
+         FakeRead(ForLet(None), _20);
+         AscribeUserType(_20, o, UserTypeProjection { base: UserType(10), projs: [] });
+         StorageLive(_22);
200         StorageLive(_23);
-         _23 = &raw const (*_3);
+         _23 = &raw const (*_1);
+         _22 = move _23 as *const [i32] (PointerCoercion(Unsize, Implicit));
202         StorageDead(_23);
+         FakeRead(ForLet(None), _22);
+         AscribeUserType(_22, o, UserTypeProjection { base: UserType(12), projs: [] });
203         StorageLive(_24);
204         StorageLive(_25);
-         StorageLive(_26);
-         _26 = &raw const (*_3);
-         _25 = move _26 as *const dyn std::marker::Send (PointerCoercion(Unsize, AsCast));
-         StorageDead(_26);
-         AscribeUserType(_25, o, UserTypeProjection { base: UserType(11), projs: [] });
+         _25 = &raw const (*_3);
+         AscribeUserType(_25, o, UserTypeProjection { base: UserType(13), projs: [] });
210         _24 = copy _25;
211         StorageDead(_25);
212         StorageDead(_24);

+         StorageLive(_26);
213         StorageLive(_27);
-         StorageLive(_28);
-         _28 = &raw const (*_3);
-         _27 = move _28 as *const [i32] (PointerCoercion(Unsize, AsCast));
-         StorageDead(_28);
+         _27 = &raw const (*_3);
+         AscribeUserType(_27, o, UserTypeProjection { base: UserType(14), projs: [] });
+         _26 = copy _27;
218         StorageDead(_27);
+         StorageDead(_26);
+         StorageLive(_28);
219         StorageLive(_29);
-         _29 = &raw const (*_3);
-         FakeRead(ForLet(None), _29);
-         AscribeUserType(_29, o, UserTypeProjection { base: UserType(13), projs: [] });
223         StorageLive(_30);
224         _30 = &raw const (*_3);
-         FakeRead(ForLet(None), _30);
-         AscribeUserType(_30, o, UserTypeProjection { base: UserType(15), projs: [] });
+         _29 = move _30 as *const dyn std::marker::Send (PointerCoercion(Unsize, AsCast));
+         StorageDead(_30);
+         AscribeUserType(_29, o, UserTypeProjection { base: UserType(15), projs: [] });
+         _28 = copy _29;
+         StorageDead(_29);
+         StorageDead(_28);
227         StorageLive(_31);
228         StorageLive(_32);
-         _32 = &raw const (*_3);
-         _31 = move _32 as *const dyn std::marker::Send (PointerCoercion(Unsize, Implicit));
-         StorageDead(_32);
-         FakeRead(ForLet(None), _31);
-         AscribeUserType(_31, o, UserTypeProjection { base: UserType(17), projs: [] });
234         StorageLive(_33);
+         _33 = &raw const (*_3);
+         _32 = move _33 as *const [i32] (PointerCoercion(Unsize, AsCast));
+         StorageDead(_33);
+         AscribeUserType(_32, o, UserTypeProjection { base: UserType(16), projs: [] });
+         _31 = copy _32;
+         StorageDead(_32);
+         StorageDead(_31);
235         StorageLive(_34);
236         _34 = &raw const (*_3);
-         _33 = move _34 as *const [i32] (PointerCoercion(Unsize, Implicit));
-         StorageDead(_34);
-         FakeRead(ForLet(None), _33);
-         AscribeUserType(_33, o, UserTypeProjection { base: UserType(19), projs: [] });
+         FakeRead(ForLet(None), _34);
+         AscribeUserType(_34, o, UserTypeProjection { base: UserType(18), projs: [] });
241         StorageLive(_35);
+         _35 = &raw const (*_3);
+         FakeRead(ForLet(None), _35);
+         AscribeUserType(_35, o, UserTypeProjection { base: UserType(20), projs: [] });
242         StorageLive(_36);
-         _36 = &raw mut (*_3);
-         AscribeUserType(_36, o, UserTypeProjection { base: UserType(20), projs: [] });
-         _35 = copy _36;
-         StorageDead(_36);
-         StorageDead(_35);
248         StorageLive(_37);
-         _37 = &raw mut (*_3);
+         _37 = &raw const (*_3);
+         _36 = move _37 as *const dyn std::marker::Send (PointerCoercion(Unsize, Implicit));
250         StorageDead(_37);
+         FakeRead(ForLet(None), _36);
+         AscribeUserType(_36, o, UserTypeProjection { base: UserType(22), projs: [] });
251         StorageLive(_38);
252         StorageLive(_39);
-         StorageLive(_40);
-         _40 = &raw mut (*_3);
-         _39 = move _40 as *mut dyn std::marker::Send (PointerCoercion(Unsize, AsCast));
-         StorageDead(_40);
-         AscribeUserType(_39, o, UserTypeProjection { base: UserType(21), projs: [] });
-         _38 = copy _39;
+         _39 = &raw const (*_3);
+         _38 = move _39 as *const [i32] (PointerCoercion(Unsize, Implicit));
259         StorageDead(_39);
-         StorageDead(_38);
+         FakeRead(ForLet(None), _38);
+         AscribeUserType(_38, o, UserTypeProjection { base: UserType(24), projs: [] });
+         StorageLive(_40);
261         StorageLive(_41);
-         StorageLive(_42);
-         _42 = &raw mut (*_3);
-         _41 = move _42 as *mut [i32] (PointerCoercion(Unsize, AsCast));
-         StorageDead(_42);
+         _41 = &raw mut (*_3);
+         AscribeUserType(_41, o, UserTypeProjection { base: UserType(25), projs: [] });
+         _40 = copy _41;
266         StorageDead(_41);
+         StorageDead(_40);
+         StorageLive(_42);
267         StorageLive(_43);
268         _43 = &raw mut (*_3);
-         FakeRead(ForLet(None), _43);
-         AscribeUserType(_43, o, UserTypeProjection { base: UserType(23), projs: [] });
+         AscribeUserType(_43, o, UserTypeProjection { base: UserType(26), projs: [] });
+         _42 = copy _43;
+         StorageDead(_43);
+         StorageDead(_42);
271         StorageLive(_44);
-         _44 = &raw mut (*_3);
-         FakeRead(ForLet(None), _44);
-         AscribeUserType(_44, o, UserTypeProjection { base: UserType(25), projs: [] });
275         StorageLive(_45);
276         StorageLive(_46);
277         _46 = &raw mut (*_3);

-         _45 = move _46 as *mut dyn std::marker::Send (PointerCoercion(Unsize, Implicit));
+         _45 = move _46 as *mut dyn std::marker::Send (PointerCoercion(Unsize, AsCast));
279         StorageDead(_46);
-         FakeRead(ForLet(None), _45);
281         AscribeUserType(_45, o, UserTypeProjection { base: UserType(27), projs: [] });
+         _44 = copy _45;
+         StorageDead(_45);
+         StorageDead(_44);
282         StorageLive(_47);
283         StorageLive(_48);
-         _48 = &raw mut (*_3);
-         _47 = move _48 as *mut [i32] (PointerCoercion(Unsize, Implicit));
+         StorageLive(_49);
+         _49 = &raw mut (*_3);
+         _48 = move _49 as *mut [i32] (PointerCoercion(Unsize, AsCast));
+         StorageDead(_49);
+         AscribeUserType(_48, o, UserTypeProjection { base: UserType(28), projs: [] });
+         _47 = copy _48;
286         StorageDead(_48);
-         FakeRead(ForLet(None), _47);
-         AscribeUserType(_47, o, UserTypeProjection { base: UserType(29), projs: [] });
-         _0 = const ();
290         StorageDead(_47);
-         StorageDead(_45);
-         StorageDead(_44);
-         StorageDead(_43);
-         StorageDead(_33);
-         StorageDead(_31);
-         StorageDead(_30);
-         StorageDead(_29);
+         StorageLive(_50);
+         _50 = &raw mut (*_3);
+         FakeRead(ForLet(None), _50);
+         AscribeUserType(_50, o, UserTypeProjection { base: UserType(30), projs: [] });
+         StorageLive(_51);
+         _51 = &raw mut (*_3);
+         FakeRead(ForLet(None), _51);
+         AscribeUserType(_51, o, UserTypeProjection { base: UserType(32), projs: [] });
+         StorageLive(_52);
+         StorageLive(_53);
+         _53 = &raw mut (*_3);
+         _52 = move _53 as *mut dyn std::marker::Send (PointerCoercion(Unsize, Implicit));
+         StorageDead(_53);
+         FakeRead(ForLet(None), _52);
+         AscribeUserType(_52, o, UserTypeProjection { base: UserType(34), projs: [] });
+         StorageLive(_54);
+         StorageLive(_55);
+         _55 = &raw mut (*_3);
+         _54 = move _55 as *mut [i32] (PointerCoercion(Unsize, Implicit));
+         StorageDead(_55);
+         FakeRead(ForLet(None), _54);
+         AscribeUserType(_54, o, UserTypeProjection { base: UserType(36), projs: [] });
+         _0 = const ();
+         StorageDead(_54);
+         StorageDead(_52);
+         StorageDead(_51);
+         StorageDead(_50);
---
303         StorageDead(_3);
304         StorageDead(_2);


thread '[mir-opt] tests/mir-opt/address_of.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/address_of.rs stdout end ----
---- [mir-opt] tests/mir-opt/build_correct_coerce.rs stdout ----
1 // MIR for `main` after built
2 
+ | User Type Annotations
+ | 0: user_ty: Canonical { value: Ty(for<'a> fn(&'a (), &'a ())), max_universe: U0, variables: [] }, span: $DIR/build_correct_coerce.rs:11:20: 11:46, inferred_ty: for<'a> fn(&'a (), &'a ())
+ |
3 fn main() -> () {
4     let mut _0: ();
5     let _1: for<'a> fn(&'a (), &'a ());

+     let mut _2: for<'a> fn(&'a (), &'a ());
6     scope 1 {
7         debug x => _1;
8     }

9 
10     bb0: {
11         StorageLive(_1);
-         _1 = foo as for<'a> fn(&'a (), &'a ()) (PointerCoercion(ReifyFnPointer(Safe), AsCast));
+         StorageLive(_2);
+         _2 = foo as for<'a> fn(&'a (), &'a ()) (PointerCoercion(ReifyFnPointer(Safe), AsCast));
+         AscribeUserType(_2, o, UserTypeProjection { base: UserType(0), projs: [] });
+         _1 = copy _2;
13         FakeRead(ForLet(None), _1);
+         StorageDead(_2);
14         _0 = const ();
15         StorageDead(_1);
16         return;

---
---- [mir-opt] tests/mir-opt/build_correct_coerce.rs stdout end ----
---- [mir-opt] tests/mir-opt/building/custom/as_cast.rs stdout ----
------rustc stdout------------------------------

------rustc stderr------------------------------
error: Could not parse local, found: "ValueTypeAscription { source: e4, user_ty: Some(Canonical { value: UserType { kind: Ty(i32), bounds: [] }, max_universe: U0, variables: [] }), user_ty_span: /checkout/tests/mir-opt/building/custom/as_cast.rs:12:24: 12:27 (#0) }"
##[error]  --> /checkout/tests/mir-opt/building/custom/as_cast.rs:12:19
   |
12 |             RET = x as i32;
   |                   ^^^^^^^^

error: Could not parse local, found: "ValueTypeAscription { source: e4, user_ty: Some(Canonical { value: UserType { kind: Ty(i32), bounds: [] }, max_universe: U0, variables: [] }), user_ty_span: /checkout/tests/mir-opt/building/custom/as_cast.rs:23:24: 23:27 (#0) }"
##[error]  --> /checkout/tests/mir-opt/building/custom/as_cast.rs:23:19
   |
23 |             RET = x as i32;
   |                   ^^^^^^^^

error: Could not parse local, found: "ValueTypeAscription { source: e4, user_ty: Some(Canonical { value: UserType { kind: Ty(*const i32), bounds: [] }, max_universe: U0, variables: [] }), user_ty_span: /checkout/tests/mir-opt/building/custom/as_cast.rs:34:24: 34:34 (#0) }"
##[error]  --> /checkout/tests/mir-opt/building/custom/as_cast.rs:34:19
   |
34 |             RET = x as *const i32;
   |                   ^^^^^^^^^^^^^^^

error: aborting due to 3 previous errors


------------------------------------------

error: compilation failed!
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/mir-opt/building/custom/as_cast.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "-Zcodegen-backend=gcc" "--target=x86_64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "-O" "-Copt-level=1" "-Zdump-mir=built | built | built" "-Zvalidate-mir" "-Zlint-mir" "-Zdump-mir-exclude-pass-number" "-Zmir-include-spans=false" "--crate-type=rlib" "-Zmir-opt-level=4" "-Zmir-enable-passes=+ReorderBasicBlocks,+ReorderLocals" "-Zdump-mir-dir=/checkout/obj/build/x86_64-unknown-linux-gnu/test/mir-opt/building/custom/as_cast" "--emit" "mir" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/mir-opt/building/custom/as_cast" "-A" "internal_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0"
stdout: none
--- stderr -------------------------------
error: Could not parse local, found: "ValueTypeAscription { source: e4, user_ty: Some(Canonical { value: UserType { kind: Ty(i32), bounds: [] }, max_universe: U0, variables: [] }), user_ty_span: /checkout/tests/mir-opt/building/custom/as_cast.rs:12:24: 12:27 (#0) }"
##[error]  --> /checkout/tests/mir-opt/building/custom/as_cast.rs:12:19
   |
12 |             RET = x as i32;
   |                   ^^^^^^^^

error: Could not parse local, found: "ValueTypeAscription { source: e4, user_ty: Some(Canonical { value: UserType { kind: Ty(i32), bounds: [] }, max_universe: U0, variables: [] }), user_ty_span: /checkout/tests/mir-opt/building/custom/as_cast.rs:23:24: 23:27 (#0) }"
##[error]  --> /checkout/tests/mir-opt/building/custom/as_cast.rs:23:19
   |
23 |             RET = x as i32;
   |                   ^^^^^^^^

error: Could not parse local, found: "ValueTypeAscription { source: e4, user_ty: Some(Canonical { value: UserType { kind: Ty(*const i32), bounds: [] }, max_universe: U0, variables: [] }), user_ty_span: /checkout/tests/mir-opt/building/custom/as_cast.rs:34:24: 34:34 (#0) }"
##[error]  --> /checkout/tests/mir-opt/building/custom/as_cast.rs:34:19
   |
34 |             RET = x as *const i32;
   |                   ^^^^^^^^^^^^^^^

error: aborting due to 3 previous errors
------------------------------------------

---- [mir-opt] tests/mir-opt/building/custom/as_cast.rs stdout end ----
---- [mir-opt] tests/mir-opt/building/enum_cast.rs stdout ----
1 // MIR for `foo` after built
2 
+ | User Type Annotations
+ | 0: user_ty: Canonical { value: Ty(usize), max_universe: U0, variables: [] }, span: $DIR/enum_cast.rs:37:12: 37:17, inferred_ty: usize
+ |
3 fn foo(_1: Foo) -> usize {
4     debug foo => _1;
5     let mut _0: usize;

---
8 
9     bb0: {
10         StorageLive(_2);

-         _2 = move _1;
-         _3 = discriminant(_2);
-         _0 = move _3 as usize (IntToInt);
+         StorageLive(_3);
+         _3 = move _1;
+         _4 = discriminant(_3);
+         _2 = move _4 as usize (IntToInt);
+         AscribeUserType(_2, o, UserTypeProjection { base: UserType(0), projs: [] });
+         _0 = copy _2;
+         StorageDead(_3);
14         StorageDead(_2);
15         return;
16     }


thread '[mir-opt] tests/mir-opt/building/enum_cast.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/building/enum_cast.foo.built.after.mir
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/building/enum_cast.rs stdout end ----
---- [mir-opt] tests/mir-opt/building/issue_110508.rs stdout ----
1 // MIR for `<impl at $DIR/issue_110508.rs:10:1: 10:9>::SELF_BAR` after built
2 
+ | User Type Annotations
+ | 0: user_ty: Canonical { value: TypeOf(DefId(0:3 ~ issue_110508[6848]::Foo), UserArgs { args: [], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(0:3 ~ issue_110508[6848]::Foo), self_ty: Foo }) }), max_universe: U0, variables: [] }, span: $DIR/issue_110508.rs:12:27: 12:40, inferred_ty: Foo
+ |
3 const <impl at $DIR/issue_110508.rs:10:1: 10:9>::SELF_BAR: Foo = {
4     let mut _0: Foo;
5     let mut _1: ();


thread '[mir-opt] tests/mir-opt/building/issue_110508.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/building/issue_110508.{impl#0}-SELF_BAR.built.after.mir
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/building/issue_110508.rs stdout end ----
---- [mir-opt] tests/mir-opt/building/logical_or_in_conditional.rs stdout ----
1 // MIR for `test_complex` after built
2 
+ | User Type Annotations
+ | 0: user_ty: Canonical { value: TypeOf(DefId(0:15 ~ logical_or_in_conditional[eacb]::{impl#1}::f), UserArgs { args: [], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(0:14 ~ logical_or_in_conditional[eacb]::{impl#1}), self_ty: E }) }), max_universe: U0, variables: [] }, span: $DIR/logical_or_in_conditional.rs:33:22: 33:26, inferred_ty: fn() -> E {E::f}
+ | 1: user_ty: Canonical { value: TypeOf(DefId(0:15 ~ logical_or_in_conditional[eacb]::{impl#1}::f), UserArgs { args: [], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(0:14 ~ logical_or_in_conditional[eacb]::{impl#1}), self_ty: E }) }), max_universe: U0, variables: [] }, span: $DIR/logical_or_in_conditional.rs:38:23: 38:27, inferred_ty: fn() -> E {E::f}
+ |
3 fn test_complex() -> () {
4     let mut _0: ();
5     let _1: ();


thread '[mir-opt] tests/mir-opt/building/logical_or_in_conditional.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/building/logical_or_in_conditional.test_complex.built.after.mir
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/building/logical_or_in_conditional.rs stdout end ----
---- [mir-opt] tests/mir-opt/const_prop/cast.rs stdout ----
4   fn main() -> () {
5       let mut _0: ();
6       let _1: u32;
+       let mut _2: u32;
+       let mut _4: u8;
7       scope 1 {
8           debug x => _1;
-           let _2: u8;
+           let _3: u8;
10           scope 2 {
-               debug y => _2;
+               debug y => _3;
12           }
13       }
14   

15       bb0: {
16           StorageLive(_1);
- -         _1 = const 42_u8 as u32 (IntToInt);
- +         _1 = const 42_u32;
19           StorageLive(_2);
- -         _2 = const 42_u32 as u8 (IntToInt);
- +         _2 = const 42_u8;
-           _0 = const ();
+ -         _2 = const 42_u8 as u32 (IntToInt);
+ -         _1 = copy _2;
+ +         _2 = const 42_u32;
+ +         _1 = const 42_u32;
23           StorageDead(_2);
+           StorageLive(_3);
+           StorageLive(_4);
+ -         _4 = const 42_u32 as u8 (IntToInt);
+ -         _3 = copy _4;
+ +         _4 = const 42_u8;
+ +         _3 = const 42_u8;
+           StorageDead(_4);
+           _0 = const ();
+           StorageDead(_3);
24           StorageDead(_1);
25           return;
26       }


thread '[mir-opt] tests/mir-opt/const_prop/cast.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/const_prop/cast.main.GVN.diff
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/const_prop/cast.rs stdout end ----
---- [mir-opt] tests/mir-opt/const_prop/indirect.rs stdout ----
5       let mut _0: ();
6       let _1: u8;
7       let mut _2: u8;
-       let mut _3: (u8, bool);
+       let mut _3: u8;
+       let mut _4: (u8, bool);
9       scope 1 {
10           debug x => _1;
11       }

13       bb0: {
14           StorageLive(_1);
15           StorageLive(_2);
- -         _2 = const 2_u32 as u8 (IntToInt);
- -         _3 = AddWithOverflow(copy _2, const 1_u8);
- -         assert(!move (_3.1: bool), "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> [success: bb1, unwind continue];
+ -         StorageLive(_3);
+ -         _3 = const 2_u32 as u8 (IntToInt);
+ -         _2 = copy _3;
+ -         _4 = AddWithOverflow(copy _2, const 1_u8);
+ -         assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> [success: bb1, unwind continue];
+ +         nop;
+ +         _3 = const 2_u8;
19 +         _2 = const 2_u8;
- +         _3 = const (3_u8, false);
+ +         _4 = const (3_u8, false);
21 +         assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 2_u8, const 1_u8) -> [success: bb1, unwind continue];
22       }
23   

24       bb1: {
- -         _1 = move (_3.0: u8);
+ -         _1 = move (_4.0: u8);
26 +         _1 = const 3_u8;
27           StorageDead(_2);
+ -         StorageDead(_3);
+ +         nop;
28           _0 = const ();
29           StorageDead(_1);
30           return;


thread '[mir-opt] tests/mir-opt/const_prop/indirect.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/const_prop/indirect.main.GVN.panic-unwind.diff
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/const_prop/indirect.rs stdout end ----
---- [mir-opt] tests/mir-opt/const_prop/pointer_expose_provenance.rs stdout ----
4   fn main() -> () {
5       let mut _0: ();
6       let _1: usize;
-       let mut _2: *const i32;
-       let _3: &i32;
-       let _4: ();
-       let mut _5: usize;
+       let mut _2: usize;
+       let mut _3: *const i32;
+       let mut _4: *const i32;
+       let _5: &i32;
+       let _6: ();
+       let mut _7: usize;
11       scope 1 {
12           debug x => _1;
13       }

14   
15       bb0: {
- -         StorageLive(_1);
+           StorageLive(_1);
+ -         StorageLive(_2);
17 +         nop;
-           StorageLive(_2);
19           StorageLive(_3);
-           _3 = const main::FOO;
-           _2 = &raw const (*_3);
-           _1 = move _2 as usize (PointerExposeProvenance);
-           StorageDead(_2);
-           StorageDead(_3);
-           StorageLive(_4);
+ -         StorageLive(_4);
+ +         nop;
26           StorageLive(_5);
-           _5 = copy _1;
- -         _4 = read(move _5) -> [return: bb1, unwind continue];
- +         _4 = read(copy _1) -> [return: bb1, unwind continue];
+           _5 = const main::FOO;
+           _4 = &raw const (*_5);
+           _3 = copy _4;
+ -         _2 = move _3 as usize (PointerExposeProvenance);
+ +         _2 = copy _4 as usize (PointerExposeProvenance);
+           _1 = copy _2;
+           StorageDead(_3);
+           StorageDead(_5);
+ -         StorageDead(_4);
+ -         StorageDead(_2);
+ +         nop;
+ +         nop;
+           StorageLive(_6);
+           StorageLive(_7);
+ -         _7 = copy _1;
+ -         _6 = read(move _7) -> [return: bb1, unwind continue];
+ +         _7 = copy _2;
+ +         _6 = read(copy _2) -> [return: bb1, unwind continue];
30       }
31   
32       bb1: {

-           StorageDead(_5);
---
39       }
40   }


thread '[mir-opt] tests/mir-opt/const_prop/pointer_expose_provenance.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/const_prop/pointer_expose_provenance.main.GVN.panic-unwind.diff
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
---
12       bb0: {
13           StorageLive(_1);
14           StorageLive(_2);
-           StorageLive(_3);
-           _3 = main as fn() (PointerCoercion(ReifyFnPointer(Safe), AsCast));
-           _2 = move _3 as usize (PointerExposeProvenance);
-           StorageDead(_3);
-           _1 = move _2 as *const fn() (PointerWithExposedProvenance);
+ -         StorageLive(_3);
+ +         nop;
+           StorageLive(_4);
+           _4 = main as fn() (PointerCoercion(ReifyFnPointer(Safe), AsCast));
+           _3 = move _4 as usize (PointerExposeProvenance);
+           _2 = copy _3;
+           StorageDead(_4);
+ -         _1 = move _2 as *const fn() (PointerWithExposedProvenance);
+ +         _1 = copy _3 as *const fn() (PointerWithExposedProvenance);
20           StorageDead(_2);
+ -         StorageDead(_3);
+ +         nop;
21           StorageDead(_1);
22           _0 = const ();
23           return;


thread '[mir-opt] tests/mir-opt/const_prop/reify_fn_ptr.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/const_prop/reify_fn_ptr.main.GVN.diff
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/const_prop/reify_fn_ptr.rs stdout end ----
---- [mir-opt] tests/mir-opt/dataflow-const-prop/cast.rs stdout ----
5       let mut _0: ();
6       let _1: i32;
7       let mut _3: u8;
-       let mut _4: i32;
+       let mut _4: u8;
+       let mut _5: i32;
9       scope 1 {
10           debug a => _1;
11           let _2: u8;

20           StorageLive(_2);
21           StorageLive(_3);
22           StorageLive(_4);
- -         _4 = copy _1;
- -         _3 = move _4 as u8 (IntToInt);
- +         _4 = const 257_i32;
+           StorageLive(_5);
+ -         _5 = copy _1;
+ -         _4 = move _5 as u8 (IntToInt);
+ -         _3 = copy _4;
+ +         _5 = const 257_i32;
+ +         _4 = const 1_u8;
26 +         _3 = const 1_u8;
-           StorageDead(_4);
+           StorageDead(_5);
28 -         _2 = Add(move _3, const 1_u8);
29 +         _2 = const 2_u8;
30           StorageDead(_3);

+           StorageDead(_4);
31           _0 = const ();
32           StorageDead(_2);
---
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/dataflow-const-prop/cast.rs stdout end ----
---- [mir-opt] tests/mir-opt/dead-store-elimination/provenance_soundness.rs stdout ----
5       debug p => _1;
6       let mut _0: ();
7       let _2: usize;
-       let mut _3: *mut i32;
-       let mut _5: *mut i32;
+       let mut _3: usize;
+       let mut _4: *mut i32;
+       let mut _6: isize;
+       let mut _7: *mut i32;
10       scope 1 {
11           debug _x => _2;
-           let _4: isize;
+           let _5: isize;
13           scope 2 {
-               debug _y => _4;
+               debug _y => _5;
15           }
16       }
17   

18       bb0: {
19           StorageLive(_2);
20           StorageLive(_3);
-           _3 = copy _1;
-           _2 = move _3 as usize (PointerExposeProvenance);
-           StorageDead(_3);
24           StorageLive(_4);
+           _4 = copy _1;
+           _3 = move _4 as usize (PointerExposeProvenance);
+           _2 = copy _3;
+           StorageDead(_4);
+           StorageDead(_3);
25           StorageLive(_5);
-           _5 = copy _1;
-           _4 = move _5 as isize (PointerExposeProvenance);
-           StorageDead(_5);
+           StorageLive(_6);
+           StorageLive(_7);
+           _7 = copy _1;
+           _6 = move _7 as isize (PointerExposeProvenance);
+           _5 = copy _6;
+           StorageDead(_7);
+           StorageDead(_6);
29           _0 = const ();
-           StorageDead(_4);
---
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/dead-store-elimination/provenance_soundness.rs stdout end ----
---- [mir-opt] tests/mir-opt/dont_reset_cast_kind_without_updating_operand.rs stdout ----
25                       debug _x => _8;
26                   }
27                   scope 7 (inlined foo) {
-                       let mut _13: *const [()];
+                       let mut _13: *mut ();
+                       let mut _14: *const [()];
---
81           StorageDead(_9);
82           _0 = const ();


thread '[mir-opt] tests/mir-opt/dont_reset_cast_kind_without_updating_operand.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/dont_reset_cast_kind_without_updating_operand.test.GVN.64bit.panic-unwind.diff
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
---

46           StorageLive(_4);
-           StorageLive(_20);
48           StorageLive(_21);
-           _21 = copy (((*_1).0: std::fmt::FormattingOptions).0: u32);
-           _20 = BitAnd(move _21, const core::fmt::flags::SIGN_PLUS_FLAG);
+           StorageLive(_22);
+           _22 = copy (((*_1).0: std::fmt::FormattingOptions).0: u32);
+           _21 = BitAnd(move _22, const core::fmt::flags::SIGN_PLUS_FLAG);
+           StorageDead(_22);
+           _4 = Ne(move _21, const 0_u32);
51           StorageDead(_21);
-           _4 = Ne(move _20, const 0_u32);
-           StorageDead(_20);
54           StorageLive(_5);
55           switchInt(copy _4) -> [0: bb2, otherwise: bb1];
56       }

69   
70       bb3: {
71           StorageLive(_6);
-           StorageLive(_22);
+           StorageLive(_25);
73           StorageLive(_23);
-           _23 = copy (((*_1).0: std::fmt::FormattingOptions).0: u32);
-           _22 = BitAnd(move _23, const core::fmt::flags::PRECISION_FLAG);
-           StorageDead(_23);
-           switchInt(move _22) -> [0: bb10, otherwise: bb11];
+           StorageLive(_24);
+           _24 = copy (((*_1).0: std::fmt::FormattingOptions).0: u32);
+           _23 = BitAnd(move _24, const core::fmt::flags::PRECISION_FLAG);
+           StorageDead(_24);
+           switchInt(move _23) -> [0: bb10, otherwise: bb11];
78       }
79   
80       bb4: {

89           _11 = copy _5;
90           StorageLive(_12);
91           StorageLive(_13);
-           StorageLive(_14);
-           _14 = copy _8;
- -         _13 = move _14 as u32 (IntToInt);
- +         _13 = copy _8 as u32 (IntToInt);
-           StorageDead(_14);
-           _12 = Add(move _13, const 1_u32);
-           StorageDead(_13);
+ -         StorageLive(_14);
+ +         nop;
99           StorageLive(_15);
-           _15 = copy _3;
- -         _0 = float_to_exponential_common_exact::<T>(move _9, move _10, move _11, move _12, move _15) -> [return: bb5, unwind continue];
+           _15 = copy _8;
+ -         _14 = move _15 as u32 (IntToInt);
+ +         _14 = copy _8 as u32 (IntToInt);
+           _13 = copy _14;
+           StorageDead(_15);
+ -         _12 = Add(move _13, const 1_u32);
+ +         _12 = Add(copy _14, const 1_u32);
+           StorageDead(_13);
+           StorageLive(_16);
+           _16 = copy _3;
+ -         _0 = float_to_exponential_common_exact::<T>(move _9, move _10, move _11, move _12, move _16) -> [return: bb5, unwind continue];
102 +         _0 = float_to_exponential_common_exact::<T>(copy _1, copy _2, move _11, move _12, copy _3) -> [return: bb5, unwind continue];
103       }
104   

105       bb5: {
-           StorageDead(_15);
---
-           _18 = copy _5;
+           _18 = copy _2;
123           StorageLive(_19);
-           _19 = copy _3;
- -         _0 = float_to_exponential_common_shortest::<T>(move _16, move _17, move _18, move _19) -> [return: bb7, unwind continue];
- +         _0 = float_to_exponential_common_shortest::<T>(copy _1, copy _2, move _18, copy _3) -> [return: bb7, unwind continue];
+           _19 = copy _5;
+           StorageLive(_20);
+           _20 = copy _3;
+ -         _0 = float_to_exponential_common_shortest::<T>(move _17, move _18, move _19, move _20) -> [return: bb7, unwind continue];
+ +         _0 = float_to_exponential_common_shortest::<T>(copy _1, copy _2, move _19, copy _3) -> [return: bb7, unwind continue];
127       }
128   
129       bb7: {

+           StorageDead(_20);
---
142       }
143   
144       bb9: {
+           StorageDead(_25);
145           _7 = discriminant(_6);
146           switchInt(move _7) -> [1: bb4, 0: bb6, otherwise: bb12];
147       }

148   
149       bb10: {
-           StorageDead(_22);
---
155       bb11: {
-           StorageDead(_22);
-           StorageLive(_24);
-           StorageLive(_25);
-           _25 = copy (((*_1).0: std::fmt::FormattingOptions).2: u16);
-           _24 = move _25 as usize (IntToInt);
-           StorageDead(_25);
-           _6 = Option::<usize>::Some(move _24);
-           StorageDead(_24);
+           StorageDead(_23);
+           StorageLive(_26);
+           _26 = copy (((*_1).0: std::fmt::FormattingOptions).2: u16);
+           _25 = move _26 as usize (IntToInt);
+           StorageDead(_26);
+           _6 = Option::<usize>::Some(copy _25);
164           goto -> bb9;
165       }
166   


thread '[mir-opt] tests/mir-opt/funky_arms.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/funky_arms.float_to_exponential_common.GVN.64bit.panic-unwind.diff
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/funky_arms.rs stdout end ----
---- [mir-opt] tests/mir-opt/gvn.rs stdout ----
------rustc stdout------------------------------

------rustc stderr------------------------------
warning: use of a double negation
##[warning]   --> /checkout/tests/mir-opt/gvn.rs:180:12
    |
180 |     opaque(--x); // This is `x`.
    |            ^^^
    |
    = note: the prefix `--` could be misinterpreted as a decrement operator which exists in other languages
    = note: use `-= 1` if you meant to decrement the value
    = note: `#[warn(double_negations)]` on by default
help: add parentheses for clarity
    |
180 |     opaque(-(-x)); // This is `x`.
    |             +  +

error: Could not parse local, found: "ValueTypeAscription { source: e6, user_ty: Some(Canonical { value: UserType { kind: Ty(*const u8), bounds: [] }, max_universe: U0, variables: [] }), user_ty_span: /checkout/tests/mir-opt/gvn.rs:1045:31: 1045:40 (#0) }"
##[error]    --> /checkout/tests/mir-opt/gvn.rs:1045:21
     |
1045 |             let a = *mut_a as *const u8;
     |                     ^^^^^^^^^^^^^^^^^^^

error: aborting due to 1 previous error; 1 warning emitted


------------------------------------------

error: compilation failed!
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/mir-opt/gvn.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "-Zcodegen-backend=gcc" "--target=x86_64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "-O" "-Copt-level=1" "-Zdump-mir=GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN | GVN" "-Zvalidate-mir" "-Zlint-mir" "-Zdump-mir-exclude-pass-number" "-Zmir-include-spans=false" "--crate-type=rlib" "-Zmir-opt-level=0" "-Zmir-enable-passes=+GVN" "-Zdump-mir-dir=/checkout/obj/build/x86_64-unknown-linux-gnu/test/mir-opt/gvn" "--emit" "mir" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/mir-opt/gvn" "-A" "internal_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Zdump-mir-exclude-alloc-bytes"
stdout: none
--- stderr -------------------------------
warning: use of a double negation
##[warning]   --> /checkout/tests/mir-opt/gvn.rs:180:12
    |
180 |     opaque(--x); // This is `x`.
    |            ^^^
    |
    = note: the prefix `--` could be misinterpreted as a decrement operator which exists in other languages
    = note: use `-= 1` if you meant to decrement the value
    = note: `#[warn(double_negations)]` on by default
help: add parentheses for clarity
    |
180 |     opaque(-(-x)); // This is `x`.
    |             +  +

error: Could not parse local, found: "ValueTypeAscription { source: e6, user_ty: Some(Canonical { value: UserType { kind: Ty(*const u8), bounds: [] }, max_universe: U0, variables: [] }), user_ty_span: /checkout/tests/mir-opt/gvn.rs:1045:31: 1045:40 (#0) }"
##[error]    --> /checkout/tests/mir-opt/gvn.rs:1045:21
     |
1045 |             let a = *mut_a as *const u8;
     |                     ^^^^^^^^^^^^^^^^^^^

error: aborting due to 1 previous error; 1 warning emitted
------------------------------------------

---
+       let mut _6: bool;
+       let mut _7: i32;
+       let mut _8: i32;
+       let mut _9: bool;
13       scope 1 {
14           debug b => _2;
15       }

28   
29       bb1: {
30 +         StorageDead(_3);
-           StorageLive(_6);
32           StorageLive(_7);
-           _7 = copy _2;
-           _6 = move _7 as i32 (IntToInt);
+           StorageLive(_8);
+           StorageLive(_9);
+           _9 = copy _2;
+           _8 = move _9 as i32 (IntToInt);
+           _7 = copy _8;
+           StorageDead(_9);
+           _0 = Add(const 100_i32, move _7);
35           StorageDead(_7);
-           _0 = Add(const 100_i32, move _6);
-           StorageDead(_6);
+           StorageDead(_8);
38           goto -> bb3;
39       }
40   

42 +         StorageDead(_3);
43           StorageLive(_4);
44           StorageLive(_5);
-           _5 = copy _2;
-           _4 = move _5 as i32 (IntToInt);
-           StorageDead(_5);
+           StorageLive(_6);
+           _6 = copy _2;
+           _5 = move _6 as i32 (IntToInt);
+           _4 = copy _5;
+           StorageDead(_6);
48           _0 = Add(const 10_i32, move _4);
49           StorageDead(_4);
+           StorageDead(_5);
50           goto -> bb3;
51       }
52   
---
24       bb1: {
25           StorageDead(_3);
26           StorageLive(_4);
-           _4 = copy _1;
-           _0 = move _4 as u32 (IntToInt);
+           StorageLive(_5);
+           _5 = copy _1;
+           _4 = move _5 as u32 (IntToInt);
+           _0 = copy _4;
+           StorageDead(_5);
29           StorageDead(_4);
30           StorageDead(_2);
31           return;

33   
34       bb2: {
35           StorageDead(_3);
-           StorageLive(_6);
- -         _6 = panic() -> unwind continue;
- +         StorageLive(_7);
- +         _7 = begin_panic::<&str>(const "explicit panic") -> unwind continue;
+           StorageLive(_7);
+ -         _7 = panic() -> unwind continue;
+ +         StorageLive(_8);
+ +         _8 = begin_panic::<&str>(const "explicit panic") -> unwind continue;
40       }
41 + }
42 + 


thread '[mir-opt] tests/mir-opt/inline/inline_diverging.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/inline/inline_diverging.g.Inline.panic-unwind.diff
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/inline/inline_diverging.rs stdout end ----
---- [mir-opt] tests/mir-opt/inline_coroutine_body.rs stdout ----
208 +         StorageLive(_40);
209 +         _40 = &raw mut _19;
210 +         _39 = copy _40 as *mut std::pin::helper::PinHelper<&mut std::future::Ready<()>> (PtrToPtr);
- +         StorageDead(_40);
212 +         _37 = copy ((*_39).0: &mut std::future::Ready<()>);
+ +         StorageDead(_40);
213 +         StorageLive(_42);
214 +         _42 = Option::<()>::None;
215 +         _35 = copy ((*_37).0: std::option::Option<()>);


thread '[mir-opt] tests/mir-opt/inline_coroutine_body.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/inline_coroutine_body.run2-{closure#0}.Inline.panic-unwind.diff
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/inline_coroutine_body.rs stdout end ----
---- [mir-opt] tests/mir-opt/instsimplify/casts.rs stdout ----
9       let mut _4: *const &u8;
10       scope 1 (inlined generic_cast::<&u8, &u8>) {
11           let mut _5: *const &u8;
+           let mut _6: *const &u8;
12       }
13   
14       bb0: {

17           StorageLive(_4);
18           _4 = copy _1;
19           StorageLive(_5);
-           _5 = copy _4;
- -         _3 = move _5 as *const &u8 (PtrToPtr);
- +         _3 = move _5;
+           StorageLive(_6);
+           _6 = copy _4;
+ -         _5 = move _6 as *const &u8 (PtrToPtr);
+ +         _5 = move _6;
+           _3 = copy _5;
+           StorageDead(_6);
23           StorageDead(_5);
24           StorageDead(_4);
25 -         _2 = move _3 as *const &u8 (PtrToPtr);


thread '[mir-opt] tests/mir-opt/instsimplify/casts.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/instsimplify/casts.redundant.InstSimplify-after-simplifycfg.diff
stack backtrace:
---
29           StorageLive(_3);
-           StorageLive(_4);
-           StorageLive(_5);
-           _5 = copy _1;
- -         StorageLive(_14);
- -         _14 = BitAnd(copy _5, const 255_u32);
- -         _4 = BitOr(const 0_u32, move _14);
- -         StorageDead(_14);
+ -         StorageLive(_4);
37 +         nop;
- +         _14 = BitAnd(copy _1, const 255_u32);
- +         _4 = copy _14;
- +         nop;
-           StorageDead(_5);
+           StorageLive(_5);
42           StorageLive(_6);
43           StorageLive(_7);
+           _7 = copy _1;
+ -         StorageLive(_16);
+ -         _16 = BitAnd(copy _7, const 255_u32);
+ -         _6 = BitOr(const 0_u32, move _16);
+ -         StorageDead(_16);
+ +         nop;
+ +         _16 = BitAnd(copy _1, const 255_u32);
+ +         _6 = copy _16;
+ +         nop;
+           StorageDead(_7);
44           StorageLive(_8);
45           StorageLive(_9);
-           _9 = copy _1;
- -         _10 = const 8_i32 as u32 (IntToInt);
- -         _11 = Lt(move _10, const 32_u32);
- -         assert(move _11, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb1, unwind continue];
- +         _10 = const 8_u32;
- +         _11 = const true;
+           StorageLive(_10);
+           StorageLive(_11);
+           _11 = copy _1;
+ -         _12 = const 8_i32 as u32 (IntToInt);
+ -         _13 = Lt(move _12, const 32_u32);
+ -         assert(move _13, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb1, unwind continue];
+ +         _12 = const 8_u32;
+ +         _13 = const true;
52 +         assert(const true, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb1, unwind continue];
53       }
54   

55       bb1: {
- -         _8 = Shr(move _9, const 8_i32);
- +         _8 = Shr(copy _1, const 8_i32);
-           StorageDead(_9);
-           _7 = BitAnd(move _8, const 15_u32);
-           StorageDead(_8);
- -         _12 = const 1_i32 as u32 (IntToInt);
- -         _13 = Lt(move _12, const 32_u32);
- -         assert(move _13, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb2, unwind continue];
- +         _12 = const 1_u32;
- +         _13 = const true;
+ -         _10 = Shr(move _11, const 8_i32);
+ +         _10 = Shr(copy _1, const 8_i32);
+           StorageDead(_11);
+           _9 = BitAnd(move _10, const 15_u32);
+           StorageDead(_10);
+ -         _14 = const 1_i32 as u32 (IntToInt);
+ -         _15 = Lt(move _14, const 32_u32);
+ -         assert(move _15, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb2, unwind continue];
+ +         _14 = const 1_u32;
+ +         _15 = const true;
66 +         assert(const true, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb2, unwind continue];
67       }
68   

69       bb2: {
-           _6 = Shl(move _7, const 1_i32);
-           StorageDead(_7);
- -         _3 = rotate_right::<u32>(move _4, move _6) -> [return: bb3, unwind unreachable];
- +         _3 = rotate_right::<u32>(copy _14, move _6) -> [return: bb3, unwind unreachable];
+           _8 = Shl(move _9, const 1_i32);
+           StorageDead(_9);
+ -         _5 = rotate_right::<u32>(move _6, move _8) -> [return: bb3, unwind unreachable];
+ +         _5 = rotate_right::<u32>(copy _16, move _8) -> [return: bb3, unwind unreachable];
74       }
75   
76       bb3: {

+           StorageDead(_8);
77           StorageDead(_6);
-           StorageDead(_4);
-           _2 = move _3 as i32 (IntToInt);
+           _4 = move _5 as i32 (IntToInt);
+           _3 = copy _4;
+           StorageDead(_5);
+ -         _2 = move _3 as i64 (IntToInt);
+ +         _2 = copy _4 as i64 (IntToInt);
+           _0 = copy _2;
80           StorageDead(_3);
-           _0 = move _2 as i64 (IntToInt);
+ -         StorageDead(_4);
+ +         nop;
82           StorageDead(_2);
83           return;
84       }


thread '[mir-opt] tests/mir-opt/issue_101973.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/issue_101973.inner.GVN.panic-unwind.diff
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/issue_101973.rs stdout end ----
---- [mir-opt] tests/mir-opt/issue_72181_1.rs stdout ----
2 
3 | User Type Annotations
4 | 0: user_ty: Canonical { value: Ty(Void), max_universe: U0, variables: [] }, span: $DIR/issue_72181_1.rs:17:12: 17:16, inferred_ty: Void
- | 1: user_ty: Canonical { value: Ty(Void), max_universe: U0, variables: [] }, span: $DIR/issue_72181_1.rs:17:12: 17:16, inferred_ty: Void
+ | 1: user_ty: Canonical { value: TypeOf(DefId(2:1882 ~ core[2eb3]::intrinsics::transmute), UserArgs { args: [(), Void], user_self_ty: None }), max_universe: U0, variables: [] }, span: $DIR/issue_72181_1.rs:17:28: 17:59, inferred_ty: unsafe fn(()) -> Void {std::intrinsics::transmute::<(), Void>}
+ | 2: user_ty: Canonical { value: Ty(Void), max_universe: U0, variables: [] }, span: $DIR/issue_72181_1.rs:17:12: 17:16, inferred_ty: Void
6 |
7 fn main() -> () {
8     let mut _0: ();

25     bb1: {
26         StorageDead(_3);
27         FakeRead(ForLet(None), _2);
-         AscribeUserType(_2, o, UserTypeProjection { base: UserType(1), projs: [] });
+         AscribeUserType(_2, o, UserTypeProjection { base: UserType(2), projs: [] });
29         StorageLive(_4);
30         StorageLive(_5);
31         _5 = move _2;


thread '[mir-opt] tests/mir-opt/issue_72181_1.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/issue_72181_1.main.built.after.mir
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/issue_72181_1.rs stdout end ----
---- [mir-opt] tests/mir-opt/issue_72181.rs stdout ----
1 // MIR for `main` after built
2 
+ | User Type Annotations
+ | 0: user_ty: Canonical { value: TypeOf(DefId(2:2360 ~ core[2eb3]::mem::size_of), UserArgs { args: [Foo], user_self_ty: None }), max_universe: U0, variables: [] }, span: $DIR/issue_72181.rs:27:13: 27:32, inferred_ty: fn() -> usize {std::mem::size_of::<Foo>}
+ |
3 fn main() -> () {
4     let mut _0: ();
5     let mut _1: usize;


thread '[mir-opt] tests/mir-opt/issue_72181.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/issue_72181.main.built.after.mir
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
---
259       bb4: {

280           _32 = copy _34 as *const u8 (Transmute);
281           StorageLive(_33);
282           _33 = copy (((*_27).0: std::vec::Vec<u8>).1: usize);
-           switchInt(UbChecks) -> [0: bb25, otherwise: bb23];
+           StorageLive(_36);
+           switchInt(UbChecks) -> [0: bb24, otherwise: bb23];
284       }
285   
286       bb5: {

324           _57 = copy _59 as *const u8 (Transmute);
325           StorageLive(_58);
326           _58 = copy (((*_52).0: std::vec::Vec<u8>).1: usize);
-           switchInt(UbChecks) -> [0: bb33, otherwise: bb31];
+           StorageLive(_61);
+           switchInt(UbChecks) -> [0: bb31, otherwise: bb30];
328       }
329   
330       bb7: {

331           StorageDead(_5);
---
423       }
424   
425       bb23: {
-           StorageLive(_36);
427           _36 = copy _34 as *mut () (Transmute);
428           _35 = std::slice::from_raw_parts::precondition_check(move _36, const <u8 as std::mem::SizedTypeProperties>::SIZE, const <u8 as std::mem::SizedTypeProperties>::ALIGN, copy _33) -> [return: bb24, unwind unreachable];
429       }

430   
431       bb24: {
-           StorageDead(_36);
-           goto -> bb25;
-       }
-   
-       bb25: {
437           StorageLive(_37);
438           _37 = *const [u8] from (copy _32, copy _33);
439           _30 = &(*_37);

440           StorageDead(_37);
+           StorageDead(_36);
441           StorageDead(_33);
442           StorageDead(_32);
443           StorageDead(_34);

448           _39 = copy _29 as &[u8] (Transmute);
449           _41 = copy _28 as &[u8] (Transmute);
450           StorageLive(_45);
+           StorageLive(_47);
+           StorageLive(_48);
451           StorageLive(_50);
452           StorageLive(_51);
453           StorageLive(_42);

456           StorageLive(_44);
457           _44 = PtrMetadata(copy _41);
458           _42 = Ne(move _43, move _44);
-           switchInt(move _42) -> [0: bb28, otherwise: bb27];
+           switchInt(move _42) -> [0: bb27, otherwise: bb26];
460       }
461   
-       bb26: {
+       bb25: {
463           StorageDead(_51);
464           StorageDead(_50);
+           StorageDead(_48);
+           StorageDead(_47);
465           StorageDead(_45);
466           StorageDead(_41);
467           StorageDead(_39);

472           switchInt(move _7) -> [0: bb6, otherwise: bb5];
473       }
474   
-       bb27: {
+       bb26: {
476           StorageDead(_44);
---
486           StorageDead(_43);
487           StorageDead(_42);

488           StorageLive(_49);
489           _49 = &raw const (*_39);
-           _45 = std::intrinsics::size_of_val::<[u8]>(move _49) -> [return: bb30, unwind unreachable];
+           _45 = std::intrinsics::size_of_val::<[u8]>(move _49) -> [return: bb29, unwind unreachable];
491       }
492   
-       bb29: {
-           StorageDead(_48);
-           StorageDead(_47);
---
+       bb29: {
502           StorageDead(_49);
503           StorageLive(_46);
-           StorageLive(_47);
505           _50 = &raw const (*_39);
506           _47 = copy _50 as *const u8 (PtrToPtr);
-           StorageLive(_48);
508           _51 = &raw const (*_41);
509           _48 = copy _51 as *const u8 (PtrToPtr);
-           _46 = compare_bytes(move _47, move _48, move _45) -> [return: bb29, unwind unreachable];
+           _46 = compare_bytes(move _47, move _48, move _45) -> [return: bb28, unwind unreachable];
511       }
512   
-       bb31: {
-           StorageLive(_61);
+       bb30: {
515           _61 = copy _59 as *mut () (Transmute);
-           _60 = std::slice::from_raw_parts::precondition_check(move _61, const <u8 as std::mem::SizedTypeProperties>::SIZE, const <u8 as std::mem::SizedTypeProperties>::ALIGN, copy _58) -> [return: bb32, unwind unreachable];
+           _60 = std::slice::from_raw_parts::precondition_check(move _61, const <u8 as std::mem::SizedTypeProperties>::SIZE, const <u8 as std::mem::SizedTypeProperties>::ALIGN, copy _58) -> [return: bb31, unwind unreachable];
517       }
518   
-       bb32: {
-           StorageDead(_61);
-           goto -> bb33;
-       }
-   
-       bb33: {
+       bb31: {
525           StorageLive(_62);
526           _62 = *const [u8] from (copy _57, copy _58);
527           _55 = &(*_62);

528           StorageDead(_62);
+           StorageDead(_61);
529           StorageDead(_58);
530           StorageDead(_57);
531           StorageDead(_59);

536           _64 = copy _54 as &[u8] (Transmute);
537           _66 = copy _53 as &[u8] (Transmute);
538           StorageLive(_70);
+           StorageLive(_72);
+           StorageLive(_73);
539           StorageLive(_75);
540           StorageLive(_76);
541           StorageLive(_67);

544           StorageLive(_69);
545           _69 = PtrMetadata(copy _66);
546           _67 = Ne(move _68, move _69);
-           switchInt(move _67) -> [0: bb36, otherwise: bb35];
+           switchInt(move _67) -> [0: bb34, otherwise: bb33];
548       }
549   
-       bb34: {
+       bb32: {
551           StorageDead(_76);
552           StorageDead(_75);
+           StorageDead(_73);
+           StorageDead(_72);
553           StorageDead(_70);
554           StorageDead(_66);
555           StorageDead(_64);

560           switchInt(move _14) -> [0: bb9, otherwise: bb8];
561       }
562   
-       bb35: {
+       bb33: {
564           StorageDead(_69);
---
574           StorageDead(_68);
575           StorageDead(_67);

576           StorageLive(_74);
577           _74 = &raw const (*_64);
-           _70 = std::intrinsics::size_of_val::<[u8]>(move _74) -> [return: bb38, unwind unreachable];
+           _70 = std::intrinsics::size_of_val::<[u8]>(move _74) -> [return: bb36, unwind unreachable];
579       }
580   
-       bb37: {
-           StorageDead(_73);
-           StorageDead(_72);
---
+       bb36: {
590           StorageDead(_74);
591           StorageLive(_71);
-           StorageLive(_72);
593           _75 = &raw const (*_64);
594           _72 = copy _75 as *const u8 (PtrToPtr);
-           StorageLive(_73);
596           _76 = &raw const (*_66);
597           _73 = copy _76 as *const u8 (PtrToPtr);
-           _71 = compare_bytes(move _72, move _73, move _70) -> [return: bb37, unwind unreachable];
+           _71 = compare_bytes(move _72, move _73, move _70) -> [return: bb35, unwind unreachable];
599 +     }
600 + 
- +     bb39: {
+ +     bb37: {
602 +         StorageDead(_51);
---

624 +         goto -> bb9;
625 +     }
626 + 
- +     bb41: {
+ +     bb39: {
628 +         _24 = discriminant(_2);
- +         switchInt(move _24) -> [1: bb42, otherwise: bb16];
+ +         switchInt(move _24) -> [1: bb40, otherwise: bb16];
630 +     }
631 + 
- +     bb42: {
+ +     bb40: {
633 +         goto -> bb18;
634 +     }
635 + 

- +     bb43: {
+ +     bb41: {
637 +         _24 = discriminant(_2);
- +         switchInt(move _24) -> [1: bb44, otherwise: bb16];
+ +         switchInt(move _24) -> [1: bb42, otherwise: bb16];
639 +     }
640 + 
- +     bb44: {
+ +     bb42: {
642 +         goto -> bb16;
643       }
644   }


thread '[mir-opt] tests/mir-opt/jump_threading.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/jump_threading.chained_conditions.JumpThreading.panic-unwind.diff
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
---
33           StorageLive(_7);
-           _7 = &_1;
-           _6 = &raw const (*_7);
-           _5 = copy _6;
-           _4 = move _5 as *const i32 (PtrToPtr);
-           StorageDead(_5);
39           StorageLive(_8);
+           _8 = &_1;
+           _7 = &raw const (*_8);
+           _6 = copy _7;
+           _5 = move _6 as *const i32 (PtrToPtr);
+           _4 = copy _5;
+           StorageDead(_6);
40           StorageLive(_9);
41           StorageLive(_10);
42           StorageLive(_11);
---
+           StorageLive(_13);
+           _13 = &mut _2;
+           _12 = &raw mut (*_13);
+           _11 = copy _12;
+           _10 = move _11 as *mut i32 (PtrToPtr);
45           _9 = copy _10;
-           _8 = move _9 as *mut i32 (PtrToPtr);
-           StorageDead(_9);
- -         _3 = std::intrinsics::copy_nonoverlapping::<i32>(move _4, move _8, const 0_usize) -> [return: bb1, unwind unreachable];
- +         copy_nonoverlapping(dst = move _8, src = move _4, count = const 0_usize);
+           StorageDead(_11);
+ -         _3 = std::intrinsics::copy_nonoverlapping::<i32>(move _4, move _9, const 0_usize) -> [return: bb1, unwind unreachable];
+ +         copy_nonoverlapping(dst = move _9, src = move _4, count = const 0_usize);
50 +         goto -> bb1;
51       }
52   

53       bb1: {
-           StorageDead(_8);
---
61           _0 = const ();
62           StorageDead(_2);


thread '[mir-opt] tests/mir-opt/lower_intrinsics.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/lower_intrinsics.rs stdout end ----
---- [mir-opt] tests/mir-opt/matches_reduce_branches.rs stdout ----
5       debug i => _1;
6       let mut _0: u8;
7       let mut _2: i16;
+       let mut _3: u8;
8   
9       bb0: {
10           _2 = discriminant(_1);

16       }
17   
18       bb2: {
-           _0 = const -127_i8 as u8 (IntToInt);
+           StorageLive(_3);
+           _3 = const -127_i8 as u8 (IntToInt);
+           _0 = copy _3;
+           StorageDead(_3);
20           goto -> bb12;
21       }
22   


thread '[mir-opt] tests/mir-opt/matches_reduce_branches.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/matches_reduce_branches.match_trunc_i16_u8_failed.MatchBranchSimplification.diff
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
---
36     bb0: {
+         StorageLive(_8);
37         StorageLive(_4);
38         StorageLive(_3);
39         _3 = Gt(copy _2, const 65535_usize);

76     }
77 
78     bb7: {
-         StorageLive(_8);
---
85     }
86 }


thread '[mir-opt] tests/mir-opt/pre-codegen/checked_ops.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.panic-unwind.mir
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/pre-codegen/checked_ops.rs stdout end ----
---- [mir-opt] tests/mir-opt/pre-codegen/slice_index.rs stdout ----
19                 let mut _6: usize;
20             }
21             scope 4 (inlined core::slice::index::get_offset_len_noubcheck::<u32>) {
-                 let _10: *const u32;
+                 let mut _10: *const u32;
23                 scope 5 {
24                     let _11: *const u32;
25                     scope 6 {


thread '[mir-opt] tests/mir-opt/pre-codegen/slice_index.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/pre-codegen/slice_index.slice_index_range.PreCodegen.after.panic-unwind.mir
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/pre-codegen/slice_index.rs stdout end ----
---- [mir-opt] tests/mir-opt/retag.rs stdout ----
3 fn array_casts() -> () {
4     let mut _0: ();
5     let mut _1: [usize; 2];
-     let mut _3: *mut [usize; 2];
-     let mut _4: &mut [usize; 2];
-     let _5: ();
-     let mut _6: *mut usize;
+     let mut _3: *mut usize;
+     let mut _4: *mut [usize; 2];
+     let mut _5: &mut [usize; 2];
+     let _6: ();
10     let mut _7: *mut usize;
-     let mut _10: *const [usize; 2];
-     let _11: &[usize; 2];
-     let _12: ();
-     let mut _13: (&usize, &usize);
-     let mut _14: &usize;
-     let _15: usize;
-     let mut _16: *const usize;
-     let mut _17: *const usize;
-     let mut _18: &usize;
-     let _19: usize;
-     let mut _22: bool;
---
-     let mut _29: &usize;
-     let _30: &usize;
+     let mut _8: *mut usize;
+     let mut _11: *const usize;
+     let mut _12: *const [usize; 2];
+     let _13: &[usize; 2];
+     let _14: ();
+     let mut _15: (&usize, &usize);
+     let mut _16: &usize;
+     let _17: usize;
+     let mut _18: *const usize;
+     let mut _19: *const usize;
+     let mut _20: &usize;
+     let _21: usize;
+     let mut _24: bool;
+     let mut _25: usize;
+     let mut _26: usize;
+     let mut _27: !;
+     let _29: !;
+     let mut _30: core::panicking::AssertKind;
29     let mut _31: &usize;
30     let _32: &usize;
-     let mut _33: std::option::Option<std::fmt::Arguments<'_>>;
+     let mut _33: &usize;
+     let _34: &usize;
+     let mut _35: std::option::Option<std::fmt::Arguments<'_>>;
32     scope 1 {
33         debug x => _1;
34         let _2: *mut usize;

35         scope 2 {
36             debug p => _2;
-             let _8: [usize; 2];
+             let _9: [usize; 2];
38             scope 3 {
-                 debug x => _8;
-                 let _9: *const usize;
+                 debug x => _9;
+                 let _10: *const usize;
41                 scope 4 {
-                     debug p => _9;
-                     let _20: &usize;
-                     let _21: &usize;
-                     let mut _34: &usize;
+                     debug p => _10;
+                     let _22: &usize;
+                     let _23: &usize;
+                     let mut _36: &usize;
46                     scope 5 {
-                         debug left_val => _20;
-                         debug right_val => _21;
-                         let _26: core::panicking::AssertKind;
+                         debug left_val => _22;
+                         debug right_val => _23;
+                         let _28: core::panicking::AssertKind;
50                         scope 6 {
-                             debug kind => _26;
+                             debug kind => _28;
52                         }
53                     }
54                 }

62         StorageLive(_2);
63         StorageLive(_3);
64         StorageLive(_4);
-         _4 = &mut _1;
-         _3 = &raw mut (*_4);
-         _2 = move _3 as *mut usize (PtrToPtr);
-         StorageDead(_3);
-         StorageDead(_4);
70         StorageLive(_5);
+         _5 = &mut _1;
+         _4 = &raw mut (*_5);
+         _3 = move _4 as *mut usize (PtrToPtr);
+         _2 = copy _3;
+         StorageDead(_4);
+         StorageDead(_5);
+         StorageDead(_3);
71         StorageLive(_6);
72         StorageLive(_7);
-         _7 = copy _2;
-         _6 = std::ptr::mut_ptr::<impl *mut usize>::add(move _7, const 1_usize) -> [return: bb1, unwind continue];
+         StorageLive(_8);
+         _8 = copy _2;
+         _7 = std::ptr::mut_ptr::<impl *mut usize>::add(move _8, const 1_usize) -> [return: bb1, unwind continue];
75     }
76 
77     bb1: {

+         StorageDead(_8);
---
80         StorageDead(_6);
-         _5 = const ();
-         StorageDead(_5);
-         StorageLive(_8);
-         _8 = [const 0_usize, const 1_usize];
85         StorageLive(_9);
+         _9 = [const 0_usize, const 1_usize];
86         StorageLive(_10);
87         StorageLive(_11);
-         _11 = &_8;
-         _10 = &raw const (*_11);
-         _9 = move _10 as *const usize (PtrToPtr);
-         StorageDead(_10);
-         StorageDead(_11);
93         StorageLive(_12);
94         StorageLive(_13);
+         _13 = &_9;
+         _12 = &raw const (*_13);
+         _11 = move _12 as *const usize (PtrToPtr);
+         _10 = copy _11;
+         StorageDead(_12);
+         StorageDead(_13);
+         StorageDead(_11);
95         StorageLive(_14);
96         StorageLive(_15);
97         StorageLive(_16);

98         StorageLive(_17);
-         _17 = copy _9;
-         _16 = std::ptr::const_ptr::<impl *const usize>::add(move _17, const 1_usize) -> [return: bb2, unwind continue];
+         StorageLive(_18);
+         StorageLive(_19);
+         _19 = copy _10;
+         _18 = std::ptr::const_ptr::<impl *const usize>::add(move _19, const 1_usize) -> [return: bb2, unwind continue];
101     }
102 
103     bb2: {

-         StorageDead(_17);
-         _15 = copy (*_16);
-         _14 = &_15;
-         StorageLive(_18);
-         _34 = const array_casts::promoted[0];
-         Retag(_34);
-         _18 = &(*_34);
-         _13 = (move _14, move _18);
-         Retag(_13);
-         StorageDead(_18);
-         StorageDead(_14);
+         StorageDead(_19);
+         _17 = copy (*_18);
+         _16 = &_17;
115         StorageLive(_20);
-         _20 = copy (_13.0: &usize);
-         Retag(_20);
-         StorageLive(_21);
-         _21 = copy (_13.1: &usize);
-         Retag(_21);
+         _36 = const array_casts::promoted[0];
+         Retag(_36);
+         _20 = &(*_36);
+         _15 = (move _16, move _20);
+         Retag(_15);
+         StorageDead(_20);
+         StorageDead(_16);
121         StorageLive(_22);
+         _22 = copy (_15.0: &usize);
+         Retag(_22);
122         StorageLive(_23);
-         _23 = copy (*_20);
+         _23 = copy (_15.1: &usize);
+         Retag(_23);
124         StorageLive(_24);
-         _24 = copy (*_21);
-         _22 = Eq(move _23, move _24);
-         switchInt(move _22) -> [0: bb4, otherwise: bb3];
+         StorageLive(_25);
+         _25 = copy (*_22);
+         StorageLive(_26);
+         _26 = copy (*_23);
+         _24 = Eq(move _25, move _26);
+         switchInt(move _24) -> [0: bb4, otherwise: bb3];
128     }
129 
130     bb3: {

+         StorageDead(_26);
---
-         _32 = &(*_21);
+         _32 = &(*_22);
164         _31 = &(*_32);
165         StorageLive(_33);
-         _33 = Option::<Arguments<'_>>::None;
-         _27 = core::panicking::assert_failed::<usize, usize>(move _28, move _29, move _31, move _33) -> unwind continue;
+         StorageLive(_34);
+         _34 = &(*_23);
+         _33 = &(*_34);
+         StorageLive(_35);
+         _35 = Option::<Arguments<'_>>::None;
+         _29 = core::panicking::assert_failed::<usize, usize>(move _30, move _31, move _33, move _35) -> unwind continue;
168     }
169 }
170 


thread '[mir-opt] tests/mir-opt/retag.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
   7: <compiletest::runtest::TestCx>::run_revision
   8: compiletest::runtest::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- [mir-opt] tests/mir-opt/retag.rs stdout end ----
---- [mir-opt] tests/mir-opt/simplify_dead_blocks.rs stdout ----
------rustc stdout------------------------------

------rustc stderr------------------------------
error: Could not parse constant pattern, found: "AscribeUserType { ascription: Ascription { annotation: CanonicalUserTypeAnnotation { user_ty: Canonical { value: UserType { kind: TypeOf(DefId(2:35334 ~ core[2eb3]::num::{impl#6}::MAX), UserArgs { args: [], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(2:1426 ~ core[2eb3]::num::{impl#6}), self_ty: u8 }) }), bounds: [] }, max_universe: U0, variables: [] }, span: /checkout/tests/mir-opt/simplify_dead_blocks.rs:32:17: 32:24 (#0), inferred_ty: u8 }, variance: - }, subpattern: Pat { ty: u8, span: /checkout/tests/mir-opt/simplify_dead_blocks.rs:32:17: 32:24 (#0), kind: ExpandedConstant { def_id: DefId(2:35334 ~ core[2eb3]::num::{impl#6}::MAX), subpattern: Pat { ty: u8, span: /checkout/tests/mir-opt/simplify_dead_blocks.rs:32:17: 32:24 (#0), kind: Constant { value: Value { ty: u8, valtree: Leaf(0xff) } } } } } }"
##[error]  --> /checkout/tests/mir-opt/simplify_dead_blocks.rs:32:17
   |
32 |                 u8::MAX => unreachable,
   |                 ^^^^^^^

error: aborting due to 1 previous error


------------------------------------------

error: compilation failed!
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/mir-opt/simplify_dead_blocks.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "-Zcodegen-backend=gcc" "--target=x86_64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "-O" "-Copt-level=1" "-Zdump-mir=SimplifyCfg-after-unreachable-enum-branching" "-Zvalidate-mir" "-Zlint-mir" "-Zdump-mir-exclude-pass-number" "-Zmir-include-spans=false" "--crate-type=rlib" "-Zmir-opt-level=0" "-Zmir-enable-passes=+SimplifyCfg-after-unreachable-enum-branching" "-Zdump-mir-dir=/checkout/obj/build/x86_64-unknown-linux-gnu/test/mir-opt/simplify_dead_blocks" "--emit" "mir" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/mir-opt/simplify_dead_blocks" "-A" "internal_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0"
stdout: none
--- stderr -------------------------------
error: Could not parse constant pattern, found: "AscribeUserType { ascription: Ascription { annotation: CanonicalUserTypeAnnotation { user_ty: Canonical { value: UserType { kind: TypeOf(DefId(2:35334 ~ core[2eb3]::num::{impl#6}::MAX), UserArgs { args: [], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(2:1426 ~ core[2eb3]::num::{impl#6}), self_ty: u8 }) }), bounds: [] }, max_universe: U0, variables: [] }, span: /checkout/tests/mir-opt/simplify_dead_blocks.rs:32:17: 32:24 (#0), inferred_ty: u8 }, variance: - }, subpattern: Pat { ty: u8, span: /checkout/tests/mir-opt/simplify_dead_blocks.rs:32:17: 32:24 (#0), kind: ExpandedConstant { def_id: DefId(2:35334 ~ core[2eb3]::num::{impl#6}::MAX), subpattern: Pat { ty: u8, span: /checkout/tests/mir-opt/simplify_dead_blocks.rs:32:17: 32:24 (#0), kind: Constant { value: Value { ty: u8, valtree: Leaf(0xff) } } } } } }"
##[error]  --> /checkout/tests/mir-opt/simplify_dead_blocks.rs:32:17
   |
32 |                 u8::MAX => unreachable,
   |                 ^^^^^^^

---
11           StorageLive(_2);

12           StorageLive(_3);
-           _3 = copy _1;
-           _2 = move _3 as usize (PointerExposeProvenance);
+ -         StorageLive(_4);
+ -         _4 = copy _1;
+ -         _3 = move _4 as usize (PointerExposeProvenance);
+ -         _2 = copy _3;
+ -         StorageDead(_4);
+ +         _3 = copy _1;
+ +         _2 = move _3 as usize (PointerExposeProvenance);
15           StorageDead(_3);
16           StorageDead(_2);
17           _0 = const ();


---
---- [mir-opt] tests/mir-opt/simplify_locals.rs stdout end ----
---- [mir-opt] tests/mir-opt/tail_call_drops.rs stdout ----
1 // MIR for `f` after built
2 
+ | User Type Annotations
+ | 0: user_ty: Canonical { value: TypeOf(DefId(3:6659 ~ alloc[bea2]::string::{impl#0}::new), UserArgs { args: [], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(3:6658 ~ alloc[bea2]::string::{impl#0}), self_ty: std::string::String }) }), max_universe: U0, variables: [] }, span: $DIR/tail_call_drops.rs:14:14: 14:25, inferred_ty: fn() -> std::string::String {std::string::String::new}
+ | 1: user_ty: Canonical { value: TypeOf(DefId(3:6659 ~ alloc[bea2]::string::{impl#0}::new), UserArgs { args: [], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(3:6658 ~ alloc[bea2]::string::{impl#0}), self_ty: std::string::String }) }), max_universe: U0, variables: [] }, span: $DIR/tail_call_drops.rs:16:14: 16:25, inferred_ty: fn() -> std::string::String {std::string::String::new}
+ | 2: user_ty: Canonical { value: TypeOf(DefId(3:6659 ~ alloc[bea2]::string::{impl#0}::new), UserArgs { args: [], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(3:6658 ~ alloc[bea2]::string::{impl#0}), self_ty: std::string::String }) }), max_universe: U0, variables: [] }, span: $DIR/tail_call_drops.rs:17:14: 17:25, inferred_ty: fn() -> std::string::String {std::string::String::new}
+ |
3 fn f() -> () {
4     let mut _0: ();
5     let mut _1: !;


thread '[mir-opt] tests/mir-opt/tail_call_drops.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/tail_call_drops.f.built.after.panic-unwind.mir
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14
---
29         StorageLive(_1);
30         _1 = const 3_u8;
31         StorageLive(_2);
-         StorageLive(_3);
33         _3 = &raw const _1;
34         _2 = copy _3 as *const ! (PtrToPtr);
-         StorageDead(_3);
36         StorageDead(_2);
37         StorageDead(_1);
38         StorageLive(_4);

39         _4 = const 3_u8;
40         StorageLive(_5);
-         StorageLive(_6);
42         _6 = &raw const _4;
43         _5 = copy _6 as *const ! (PtrToPtr);
-         StorageDead(_6);
45         StorageDead(_5);
46         StorageDead(_4);
47         return;


thread '[mir-opt] tests/mir-opt/uninhabited_not_read.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21:
Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/uninhabited_not_read.main.SimplifyLocals-final.after.mir
stack backtrace:
   5: __rustc::rust_begin_unwind
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/std/src/panicking.rs:689:5
   6: core::panicking::panic_fmt
             at /rustc/1b6e21e163baa0b20f119e17e3871910978a60b6/library/core/src/panicking.rs:80:14

For more information how to resolve CI failures of this job, visit this link.

@lcnr
Copy link
Contributor

lcnr commented Dec 22, 2025

@bors try @rust-timer queue

@rust-timer
Copy link
Collaborator

Awaiting bors try build completion.

@rustbot label: +S-waiting-on-perf

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Dec 22, 2025
@rust-bors
Copy link

rust-bors bot commented Dec 22, 2025

⌛ Trying commit 62b18ee with merge 48c3871

(The previously running try build was automatically cancelled.)

To cancel the try build, run the command @bors try cancel.

Workflow: https://github.com/rust-lang/rust/actions/runs/20438909322

rust-bors bot added a commit that referenced this pull request Dec 22, 2025
[DO NOT MERGE] User lt param always experiment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. S-waiting-on-perf Status: Waiting on a perf run to be completed. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants