39 lines
		
	
	
		
			968 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			968 B
		
	
	
	
		
			C
		
	
	
	
| // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
 | |
| // PR 4349
 | |
| 
 | |
| union reg
 | |
| {
 | |
|     unsigned char b[2][2];
 | |
|     unsigned short w[2];
 | |
|     unsigned int d;
 | |
| };
 | |
| struct cpu
 | |
| {
 | |
|     union reg pc;
 | |
| };
 | |
| extern struct cpu cpu;
 | |
| struct svar
 | |
| {
 | |
|     void *ptr;
 | |
| };
 | |
| // CHECK: @svars1 = global [1 x %struct.svar] [%struct.svar { i8* bitcast (%struct.cpu* @cpu to i8*) }]
 | |
| struct svar svars1[] =
 | |
| {
 | |
|     { &((cpu.pc).w[0]) }
 | |
| };
 | |
| // CHECK: @svars2 = global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8, i8* bitcast (%struct.cpu* @cpu to i8*), i64 1) }]
 | |
| struct svar svars2[] =
 | |
| {
 | |
|     { &((cpu.pc).b[0][1]) }
 | |
| };
 | |
| // CHECK: @svars3 = global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8, i8* bitcast (%struct.cpu* @cpu to i8*), i64 2) }]
 | |
| struct svar svars3[] =
 | |
| {
 | |
|     { &((cpu.pc).w[1]) }
 | |
| };
 | |
| // CHECK: @svars4 = global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8, i8* bitcast (%struct.cpu* @cpu to i8*), i64 3) }]
 | |
| struct svar svars4[] =
 | |
| {
 | |
|     { &((cpu.pc).b[1][1]) }
 | |
| };
 |