]> git.lizzy.rs Git - rust.git/blob - src/test/mir-opt/deaggregator_test_enum_2.rs
Render const pointers in MIR more compactly
[rust.git] / src / test / mir-opt / deaggregator_test_enum_2.rs
1 // Test that deaggregate fires in more than one basic block
2
3 enum Foo {
4     A(i32),
5     B(i32),
6 }
7
8 fn test1(x: bool, y: i32) -> Foo {
9     if x {
10         Foo::A(y)
11     } else {
12         Foo::B(y)
13     }
14 }
15
16 fn main() {
17     // Make sure the function actually gets instantiated.
18     test1(false, 0);
19 }
20
21 // END RUST SOURCE
22 // START rustc.test1.Deaggregator.before.mir
23 //  bb1: {
24 //      StorageLive(_5);
25 //      _5 = _2;
26 //      _0 = Foo::B(move _5,);
27 //      StorageDead(_5);
28 //      goto -> bb3;
29 //  }
30 //  bb2: {
31 //      StorageLive(_4);
32 //      _4 = _2;
33 //      _0 = Foo::A(move _4,);
34 //      StorageDead(_4);
35 //      goto -> bb3;
36 //  }
37 // END rustc.test1.Deaggregator.before.mir
38 // START rustc.test1.Deaggregator.after.mir
39 //  bb1: {
40 //      StorageLive(_5);
41 //      _5 = _2;
42 //      ((_0 as B).0: i32) = move _5;
43 //      discriminant(_0) = 1;
44 //      StorageDead(_5);
45 //      goto -> bb3;
46 //  }
47 //  bb2: {
48 //      StorageLive(_4);
49 //      _4 = _2;
50 //      ((_0 as A).0: i32) = move _4;
51 //      discriminant(_0) = 0;
52 //      StorageDead(_4);
53 //      goto -> bb3;
54 //  }
55 // END rustc.test1.Deaggregator.after.mir
56 //