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 { i8* bitcast (%struct.cpu* @cpu to i8*) }] |
20 | struct svar svars1[] = |
21 | { |
22 | { &((cpu.pc).w[0]) } |
23 | }; |
24 | // CHECK: @svars2 = {{(dso_local )?}}global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8, i8* bitcast (%struct.cpu* @cpu to i8*), 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 { i8* getelementptr (i8, i8* bitcast (%struct.cpu* @cpu to i8*), 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 { i8* getelementptr (i8, i8* bitcast (%struct.cpu* @cpu to i8*), i64 3) }] |
35 | struct svar svars4[] = |
36 | { |
37 | { &((cpu.pc).b[1][1]) } |
38 | }; |
39 | |