aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/rust/compile/torture/union.rs
blob: 724168817adad5612b2ca880df2a737904f16cd8 (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
union U
{
  f1: u8
}

union V
{
  f1: u8,
  f2: u16,
  f3: i32,
}

struct S
{
  f1: U,
  f2: V
}

fn main ()
{
  let u = U { f1: 16 };
  let v = V { f2: 365 };
  let s = S { f1: u, f2: v };
  let _v125 = unsafe
    { let mut uv: u64;
      uv = s.f1.f1 as u64;
      uv += s.f2.f1 as u64;
      uv += s.f2.f2 as u64;
      uv -= s.f2.f3 as u64;
      uv
    };
}