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