1
- // skip-filecheck
2
1
// unit-test: DataflowConstProp
3
2
// compile-flags: -O --crate-type=lib
4
3
// ignore-endian-big
@@ -8,55 +7,77 @@ use std::mem::transmute;
8
7
9
8
// EMIT_MIR transmute.less_as_i8.DataflowConstProp.diff
10
9
pub fn less_as_i8 ( ) -> i8 {
10
+ // CHECK-LABEL: fn less_as_i8(
11
+ // FIXME-CHECK: _0 = const -1_i8;
11
12
unsafe { transmute ( std:: cmp:: Ordering :: Less ) }
12
13
}
13
14
14
15
// EMIT_MIR transmute.from_char.DataflowConstProp.diff
15
16
pub fn from_char ( ) -> i32 {
17
+ // CHECK-LABEL: fn from_char(
18
+ // CHECK: _0 = const 82_i32;
16
19
unsafe { transmute ( 'R' ) }
17
20
}
18
21
19
22
// EMIT_MIR transmute.valid_char.DataflowConstProp.diff
20
23
pub fn valid_char ( ) -> char {
24
+ // CHECK-LABEL: fn valid_char(
25
+ // CHECK: _0 = const 'R';
21
26
unsafe { transmute ( 0x52_u32 ) }
22
27
}
23
28
24
29
// EMIT_MIR transmute.invalid_char.DataflowConstProp.diff
25
30
pub unsafe fn invalid_char ( ) -> char {
31
+ // CHECK-LABEL: fn invalid_char(
32
+ // CHECK: _0 = const {transmute(0x7fffffff): char};
26
33
unsafe { transmute ( i32:: MAX ) }
27
34
}
28
35
29
36
// EMIT_MIR transmute.invalid_bool.DataflowConstProp.diff
30
37
pub unsafe fn invalid_bool ( ) -> bool {
38
+ // CHECK-LABEL: fn invalid_bool(
39
+ // CHECK: _0 = const {transmute(0xff): bool};
31
40
unsafe { transmute ( -1_i8 ) }
32
41
}
33
42
34
43
// EMIT_MIR transmute.undef_union_as_integer.DataflowConstProp.diff
35
44
pub unsafe fn undef_union_as_integer ( ) -> u32 {
45
+ // CHECK-LABEL: fn undef_union_as_integer(
46
+ // CHECK: _1 = Union32 {
47
+ // CHECK: _0 = move _1 as u32 (Transmute);
36
48
union Union32 { value : u32 , unit : ( ) }
37
49
unsafe { transmute ( Union32 { unit : ( ) } ) }
38
50
}
39
51
40
52
// EMIT_MIR transmute.unreachable_direct.DataflowConstProp.diff
41
53
pub unsafe fn unreachable_direct ( ) -> ! {
54
+ // CHECK-LABEL: fn unreachable_direct(
55
+ // CHECK: [[unit:_.*]] = ();
56
+ // CHECK: move [[unit]] as Never (Transmute);
42
57
let x: Never = unsafe { transmute ( ( ) ) } ;
43
58
match x { }
44
59
}
45
60
46
61
// EMIT_MIR transmute.unreachable_ref.DataflowConstProp.diff
47
62
pub unsafe fn unreachable_ref ( ) -> ! {
63
+ // CHECK-LABEL: fn unreachable_ref(
64
+ // CHECK: = const {0x1 as &Never};
48
65
let x: & Never = unsafe { transmute ( 1_usize ) } ;
49
66
match * x { }
50
67
}
51
68
52
69
// EMIT_MIR transmute.unreachable_mut.DataflowConstProp.diff
53
70
pub unsafe fn unreachable_mut ( ) -> ! {
71
+ // CHECK-LABEL: fn unreachable_mut(
72
+ // CHECK: = const {0x1 as &mut Never};
54
73
let x: & mut Never = unsafe { transmute ( 1_usize ) } ;
55
74
match * x { }
56
75
}
57
76
58
77
// EMIT_MIR transmute.unreachable_box.DataflowConstProp.diff
59
78
pub unsafe fn unreachable_box ( ) -> ! {
79
+ // CHECK-LABEL: fn unreachable_box(
80
+ // CHECK: = const Box::<Never>(
60
81
let x: Box < Never > = unsafe { transmute ( 1_usize ) } ;
61
82
match * x { }
62
83
}
0 commit comments