xref: /llvm-project/clang/test/CodeGen/pr4349.c (revision 8421307b6b165778260b9814ca4d2256bc3711df)
1 // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
2 // PR 4349
3 
4 union reg
5 {
6     unsigned char b[2][2];
7     unsigned short w[2];
8     unsigned int d;
9 };
10 struct cpu
11 {
12     union reg pc;
13 };
14 extern struct cpu cpu;
15 struct svar
16 {
17     void *ptr;
18 };
19 // CHECK: @svars1 = {{(dso_local )?}}global [1 x %struct.svar] [%struct.svar { ptr @cpu }]
20 struct svar svars1[] =
21 {
22     { &((cpu.pc).w[0]) }
23 };
24 // CHECK: @svars2 = {{(dso_local )?}}global [1 x %struct.svar] [%struct.svar { ptr getelementptr (i8, ptr @cpu, i64 1) }]
25 struct svar svars2[] =
26 {
27     { &((cpu.pc).b[0][1]) }
28 };
29 // CHECK: @svars3 = {{(dso_local )?}}global [1 x %struct.svar] [%struct.svar { ptr getelementptr (i8, ptr @cpu, i64 2) }]
30 struct svar svars3[] =
31 {
32     { &((cpu.pc).w[1]) }
33 };
34 // CHECK: @svars4 = {{(dso_local )?}}global [1 x %struct.svar] [%struct.svar { ptr getelementptr (i8, ptr @cpu, i64 3) }]
35 struct svar svars4[] =
36 {
37     { &((cpu.pc).b[1][1]) }
38 };
39