summaryrefslogtreecommitdiffstats
path: root/tests/mir-opt/sroa/structs.ref_copies.ScalarReplacementOfAggregates.diff
blob: 304bf2fb1a76509e69526effd607e5c5a614bb66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
- // MIR for `ref_copies` before ScalarReplacementOfAggregates
+ // MIR for `ref_copies` after ScalarReplacementOfAggregates
  
  fn ref_copies(_1: &Foo) -> () {
      debug x => _1;
      let mut _0: ();
      let _2: Foo;
+     let _5: u8;
+     let _6: ();
+     let _7: &str;
+     let _8: std::option::Option<isize>;
      scope 1 {
-         debug y => _2;
+         debug ((y: Foo).0: u8) => _5;
+         debug ((y: Foo).1: ()) => _6;
+         debug ((y: Foo).2: &str) => _7;
+         debug ((y: Foo).3: std::option::Option<isize>) => _8;
          let _3: u8;
          scope 2 {
              debug t => _3;
              let _4: &str;
              scope 3 {
                  debug u => _4;
              }
          }
      }
  
      bb0: {
-         StorageLive(_2);
-         _2 = (*_1);
+         StorageLive(_5);
+         StorageLive(_6);
+         StorageLive(_7);
+         StorageLive(_8);
+         nop;
+         _5 = ((*_1).0: u8);
+         _6 = ((*_1).1: ());
+         _7 = ((*_1).2: &str);
+         _8 = ((*_1).3: std::option::Option<isize>);
+         nop;
          StorageLive(_3);
-         _3 = (_2.0: u8);
+         _3 = _5;
          StorageLive(_4);
-         _4 = (_2.2: &str);
+         _4 = _7;
          _0 = const ();
          StorageDead(_4);
          StorageDead(_3);
-         StorageDead(_2);
+         StorageDead(_5);
+         StorageDead(_6);
+         StorageDead(_7);
+         StorageDead(_8);
+         nop;
          return;
      }
  }