88#![ feature( inline_const) ]
99#![ allow( unreachable_code) ]
1010
11- use std:: mem:: MaybeUninit ;
1211use std:: intrinsics:: { transmute, transmute_unchecked} ;
12+ use std:: mem:: MaybeUninit ;
1313
1414// Some of these need custom MIR to not get removed by MIR optimizations.
1515use std:: intrinsics:: mir:: * ;
@@ -63,7 +63,7 @@ pub unsafe fn check_to_empty_array(x: [u32; 5]) -> [u32; 0] {
6363 // CHECK-NOT: trap
6464 // CHECK: call void @llvm.trap
6565 // CHECK-NOT: trap
66- mir ! {
66+ mir ! {
6767 {
6868 RET = CastTransmute ( x) ;
6969 Return ( )
@@ -78,7 +78,7 @@ pub unsafe fn check_from_empty_array(x: [u32; 0]) -> [u32; 5] {
7878 // CHECK-NOT: trap
7979 // CHECK: call void @llvm.trap
8080 // CHECK-NOT: trap
81- mir ! {
81+ mir ! {
8282 {
8383 RET = CastTransmute ( x) ;
8484 Return ( )
@@ -93,7 +93,7 @@ pub unsafe fn check_to_uninhabited(x: u16) {
9393 // CHECK-NOT: trap
9494 // CHECK: call void @llvm.trap
9595 // CHECK-NOT: trap
96- mir ! {
96+ mir ! {
9797 let temp: BigNever ;
9898 {
9999 temp = CastTransmute ( x) ;
@@ -107,7 +107,7 @@ pub unsafe fn check_to_uninhabited(x: u16) {
107107#[ custom_mir( dialect = "runtime" , phase = "optimized" ) ]
108108pub unsafe fn check_from_uninhabited ( x : BigNever ) -> u16 {
109109 // CHECK: ret i16 poison
110- mir ! {
110+ mir ! {
111111 {
112112 RET = CastTransmute ( x) ;
113113 Return ( )
@@ -122,9 +122,7 @@ pub unsafe fn check_intermediate_passthrough(x: u32) -> i32 {
122122 // CHECK: %[[TMP:.+]] = add i32 1, %x
123123 // CHECK: %[[RET:.+]] = add i32 %[[TMP]], 1
124124 // CHECK: ret i32 %[[RET]]
125- unsafe {
126- transmute :: < u32 , i32 > ( 1 + x) + 1
127- }
125+ unsafe { transmute :: < u32 , i32 > ( 1 + x) + 1 }
128126}
129127
130128// CHECK-LABEL: @check_nop_pair(
@@ -134,9 +132,7 @@ pub unsafe fn check_nop_pair(x: (u8, i8)) -> (i8, u8) {
134132 // CHECK: %0 = insertvalue { i8, i8 } poison, i8 %x.0, 0
135133 // CHECK: %1 = insertvalue { i8, i8 } %0, i8 %x.1, 1
136134 // CHECK: ret { i8, i8 } %1
137- unsafe {
138- transmute ( x)
139- }
135+ unsafe { transmute ( x) }
140136}
141137
142138// CHECK-LABEL: @check_to_newtype(
@@ -168,9 +164,9 @@ pub unsafe fn check_aggregate_to_bool(x: Aggregate8) -> bool {
168164// CHECK-LABEL: @check_aggregate_from_bool(
169165#[ no_mangle]
170166pub unsafe fn check_aggregate_from_bool ( x : bool ) -> Aggregate8 {
171- // CHECK: %0 = alloca %Aggregate8, align 1
167+ // CHECK: %_0 = alloca %Aggregate8, align 1
172168 // CHECK: %[[BYTE:.+]] = zext i1 %x to i8
173- // CHECK: store i8 %[[BYTE]], ptr %0 , align 1
169+ // CHECK: store i8 %[[BYTE]], ptr %_0 , align 1
174170 transmute ( x)
175171}
176172
@@ -195,8 +191,8 @@ pub unsafe fn check_byte_from_bool(x: bool) -> u8 {
195191// CHECK-LABEL: @check_to_pair(
196192#[ no_mangle]
197193pub unsafe fn check_to_pair ( x : u64 ) -> Option < i32 > {
198- // CHECK: %0 = alloca { i32, i32 }, align 4
199- // CHECK: store i64 %x, ptr %0 , align 4
194+ // CHECK: %_0 = alloca { i32, i32 }, align 4
195+ // CHECK: store i64 %x, ptr %_0 , align 4
200196 transmute ( x)
201197}
202198
@@ -207,37 +203,37 @@ pub unsafe fn check_from_pair(x: Option<i32>) -> u64 {
207203 // immediates so we can write using the destination alloca's alignment.
208204 const { assert ! ( std:: mem:: align_of:: <Option <i32 >>( ) == 4 ) } ;
209205
210- // CHECK: %0 = alloca i64, align 8
211- // CHECK: store i32 %x.0, ptr %1 , align 8
212- // CHECK: store i32 %x.1, ptr %2 , align 4
213- // CHECK: %3 = load i64, ptr %0 , align 8
214- // CHECK: ret i64 %3
206+ // CHECK: %_0 = alloca i64, align 8
207+ // CHECK: store i32 %x.0, ptr %0 , align 8
208+ // CHECK: store i32 %x.1, ptr %1 , align 4
209+ // CHECK: %2 = load i64, ptr %_0 , align 8
210+ // CHECK: ret i64 %2
215211 transmute ( x)
216212}
217213
218214// CHECK-LABEL: @check_to_float(
219215#[ no_mangle]
220216pub unsafe fn check_to_float ( x : u32 ) -> f32 {
221217 // CHECK-NOT: alloca
222- // CHECK: %0 = bitcast i32 %x to float
223- // CHECK: ret float %0
218+ // CHECK: %_0 = bitcast i32 %x to float
219+ // CHECK: ret float %_0
224220 transmute ( x)
225221}
226222
227223// CHECK-LABEL: @check_from_float(
228224#[ no_mangle]
229225pub unsafe fn check_from_float ( x : f32 ) -> u32 {
230226 // CHECK-NOT: alloca
231- // CHECK: %0 = bitcast float %x to i32
232- // CHECK: ret i32 %0
227+ // CHECK: %_0 = bitcast float %x to i32
228+ // CHECK: ret i32 %_0
233229 transmute ( x)
234230}
235231
236232// CHECK-LABEL: @check_to_bytes(
237233#[ no_mangle]
238234pub unsafe fn check_to_bytes ( x : u32 ) -> [ u8 ; 4 ] {
239- // CHECK: %0 = alloca [4 x i8], align 1
240- // CHECK: store i32 %x, ptr %0 , align 1
235+ // CHECK: %_0 = alloca [4 x i8], align 1
236+ // CHECK: store i32 %x, ptr %_0 , align 1
241237 transmute ( x)
242238}
243239
@@ -253,10 +249,10 @@ pub unsafe fn check_from_bytes(x: [u8; 4]) -> u32 {
253249// CHECK-LABEL: @check_to_aggregate(
254250#[ no_mangle]
255251pub unsafe fn check_to_aggregate ( x : u64 ) -> Aggregate64 {
256- // CHECK: %0 = alloca %Aggregate64, align 4
257- // CHECK: store i64 %x, ptr %0 , align 4
258- // CHECK: %1 = load i64, ptr %0 , align 4
259- // CHECK: ret i64 %1
252+ // CHECK: %_0 = alloca %Aggregate64, align 4
253+ // CHECK: store i64 %x, ptr %_0 , align 4
254+ // CHECK: %0 = load i64, ptr %_0 , align 4
255+ // CHECK: ret i64 %0
260256 transmute ( x)
261257}
262258
@@ -273,7 +269,7 @@ pub unsafe fn check_from_aggregate(x: Aggregate64) -> u64 {
273269#[ no_mangle]
274270pub unsafe fn check_long_array_less_aligned ( x : [ u64 ; 100 ] ) -> [ u16 ; 400 ] {
275271 // CHECK-NEXT: start
276- // CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 2 %0 , ptr align 8 %x, i64 800, i1 false)
272+ // CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 2 %_0 , ptr align 8 %x, i64 800, i1 false)
277273 // CHECK-NEXT: ret void
278274 transmute ( x)
279275}
@@ -282,7 +278,7 @@ pub unsafe fn check_long_array_less_aligned(x: [u64; 100]) -> [u16; 400] {
282278#[ no_mangle]
283279pub unsafe fn check_long_array_more_aligned ( x : [ u8 ; 100 ] ) -> [ u32 ; 25 ] {
284280 // CHECK-NEXT: start
285- // CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %0 , ptr align 1 %x, i64 100, i1 false)
281+ // CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %_0 , ptr align 1 %x, i64 100, i1 false)
286282 // CHECK-NEXT: ret void
287283 transmute ( x)
288284}
@@ -301,8 +297,8 @@ pub unsafe fn check_pair_with_bool(x: (u8, bool)) -> (bool, i8) {
301297pub unsafe fn check_float_to_pointer ( x : f64 ) -> * const ( ) {
302298 // CHECK-NOT: alloca
303299 // CHECK: %0 = bitcast double %x to i64
304- // CHECK: %1 = inttoptr i64 %0 to ptr
305- // CHECK: ret ptr %1
300+ // CHECK: %_0 = inttoptr i64 %0 to ptr
301+ // CHECK: ret ptr %_0
306302 transmute ( x)
307303}
308304
@@ -311,8 +307,8 @@ pub unsafe fn check_float_to_pointer(x: f64) -> *const () {
311307pub unsafe fn check_float_from_pointer ( x : * const ( ) ) -> f64 {
312308 // CHECK-NOT: alloca
313309 // CHECK: %0 = ptrtoint ptr %x to i64
314- // CHECK: %1 = bitcast i64 %0 to double
315- // CHECK: ret double %1
310+ // CHECK: %_0 = bitcast i64 %0 to double
311+ // CHECK: ret double %_0
316312 transmute ( x)
317313}
318314
@@ -376,10 +372,10 @@ pub unsafe fn check_issue_110005(x: (usize, bool)) -> Option<Box<[u8]>> {
376372// CHECK-LABEL: @check_pair_to_dst_ref(
377373#[ no_mangle]
378374pub unsafe fn check_pair_to_dst_ref < ' a > ( x : ( usize , usize ) ) -> & ' a [ u8 ] {
379- // CHECK: %0 = inttoptr i64 %x.0 to ptr
380- // CHECK: %1 = insertvalue { ptr, i64 } poison, ptr %0, 0
381- // CHECK: %2 = insertvalue { ptr, i64 } %1 , i64 %x.1, 1
382- // CHECK: ret { ptr, i64 } %2
375+ // CHECK: %_0. 0 = inttoptr i64 %x.0 to ptr
376+ // CHECK: %0 = insertvalue { ptr, i64 } poison, ptr %_0. 0, 0
377+ // CHECK: %1 = insertvalue { ptr, i64 } %0 , i64 %x.1, 1
378+ // CHECK: ret { ptr, i64 } %1
383379 transmute ( x)
384380}
385381
@@ -391,7 +387,7 @@ pub unsafe fn check_issue_109992(x: ()) -> [(); 1] {
391387
392388 // CHECK: start
393389 // CHECK-NEXT: ret void
394- mir ! {
390+ mir ! {
395391 {
396392 RET = CastTransmute ( x) ;
397393 Return ( )
@@ -408,7 +404,7 @@ pub unsafe fn check_unit_to_never(x: ()) {
408404 // CHECK-NOT: trap
409405 // CHECK: call void @llvm.trap
410406 // CHECK-NOT: trap
411- mir ! {
407+ mir ! {
412408 let temp: ZstNever ;
413409 {
414410 temp = CastTransmute ( x) ;
@@ -425,7 +421,7 @@ pub unsafe fn check_unit_from_never(x: ZstNever) -> () {
425421
426422 // CHECK: start
427423 // CHECK-NEXT: ret void
428- mir ! {
424+ mir ! {
429425 {
430426 RET = CastTransmute ( x) ;
431427 Return ( )
@@ -457,10 +453,10 @@ pub struct HighAlignScalar(u8);
457453// CHECK-LABEL: @check_to_overalign(
458454#[ no_mangle]
459455pub unsafe fn check_to_overalign ( x : u64 ) -> HighAlignScalar {
460- // CHECK: %0 = alloca %HighAlignScalar, align 8
461- // CHECK: store i64 %x, ptr %0 , align 8
462- // CHECK: %1 = load i64, ptr %0 , align 8
463- // CHECK: ret i64 %1
456+ // CHECK: %_0 = alloca %HighAlignScalar, align 8
457+ // CHECK: store i64 %x, ptr %_0 , align 8
458+ // CHECK: %0 = load i64, ptr %_0 , align 8
459+ // CHECK: ret i64 %0
464460 transmute ( x)
465461}
466462
0 commit comments