mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51695 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			40 lines
		
	
	
		
			703 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			703 B
		
	
	
	
		
			C
		
	
	
	
	
	
| // RUN: %llvmgcc %s -S -o -
 | |
| 
 | |
| // Aggregates of size zero should be dropped from argument list.
 | |
| typedef long int Tlong;
 | |
| struct S2411 {
 | |
|   __attribute__((aligned)) Tlong:0;
 | |
| };
 | |
| 
 | |
| extern struct S2411 a2411[5];
 | |
| extern void checkx2411(struct S2411);
 | |
| void test2411(void) {
 | |
|   checkx2411(a2411[0]);
 | |
| }
 | |
| 
 | |
| // Proper handling of zero sized fields during type conversion.
 | |
| typedef unsigned long long int Tal2ullong __attribute__((aligned(2)));
 | |
| struct S2525 {
 | |
|  Tal2ullong: 0;
 | |
|  struct {
 | |
|  } e;
 | |
| };
 | |
| struct S2525 s2525;
 | |
| 
 | |
| struct {
 | |
|   signed char f;
 | |
|   char :0;
 | |
|   struct{}h;
 | |
|   char * i[5];
 | |
| } data; 
 | |
| 
 | |
| // Taking address of a zero sized field.
 | |
| struct Z {};
 | |
| struct Y {
 | |
|   int i;
 | |
|   struct Z z;
 | |
| };
 | |
| void *f(struct Y *y) {
 | |
|   return &y->z;
 | |
| }
 |