1 // RUN: %clang_cc1 %s -emit-llvm -O0 -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 = 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 = global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8* bitcast (%struct.cpu* @cpu to i8*), i64 1) }] 25 struct svar svars2[] = 26 { 27 { &((cpu.pc).b[0][1]) } 28 }; 29 // CHECK: @svars3 = global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8* bitcast (%struct.cpu* @cpu to i8*), i64 2) }] 30 struct svar svars3[] = 31 { 32 { &((cpu.pc).w[1]) } 33 }; 34 // CHECK: @svars4 = global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8* bitcast (%struct.cpu* @cpu to i8*), i64 3) }] 35 struct svar svars4[] = 36 { 37 { &((cpu.pc).b[1][1]) } 38 }; 39