forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			39 lines
		
	
	
		
			804 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			804 B
		
	
	
	
		
			C
		
	
	
	
| // RUN: %clang_cc1 -emit-llvm -o %t %s
 | |
| 
 | |
| // RUN: grep '@r = common global \[1 x .*\] zeroinitializer' %t
 | |
| 
 | |
| int r[];
 | |
| int (*a)[] = &r;
 | |
| 
 | |
| struct s0;
 | |
| struct s0 x;
 | |
| // RUN: grep '@x = common global .struct.s0 zeroinitializer' %t
 | |
| 
 | |
| struct s0 y;
 | |
| // RUN: grep '@y = common global .struct.s0 zeroinitializer' %t
 | |
| struct s0 *f0() {
 | |
|   return &y;
 | |
| }
 | |
| 
 | |
| struct s0 {
 | |
|   int x;
 | |
| };
 | |
| 
 | |
| // RUN: grep '@b = common global \[1 x .*\] zeroinitializer' %t
 | |
| int b[];
 | |
| int *f1() {
 | |
|   return b;
 | |
| }
 | |
| 
 | |
| // Check that the most recent tentative definition wins.
 | |
| // RUN: grep '@c = common global \[4 x .*\] zeroinitializer' %t
 | |
| int c[];
 | |
| int c[4];
 | |
| 
 | |
| // Check that we emit static tentative definitions
 | |
| // RUN: grep '@c5 = internal global \[1 x .*\] zeroinitializer' %t
 | |
| static int c5[];
 | |
| static int func() { return c5[0]; }
 | |
| int callfunc() { return func(); }
 | |
| 
 |