33 lines
		
	
	
		
			600 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			600 B
		
	
	
	
		
			C
		
	
	
	
| // RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
 | |
| 
 | |
| typedef unsigned char uint8_t;
 | |
| typedef unsigned short uint16_t;
 | |
| typedef unsigned int uint32_t;
 | |
| 
 | |
| #pragma pack(push, 1)
 | |
| typedef struct
 | |
| {
 | |
|         uint32_t        a;
 | |
| } foo;
 | |
| 
 | |
| typedef struct {
 | |
|         uint8_t         major;
 | |
|         uint8_t         minor;
 | |
|         uint16_t        build;
 | |
| } VERSION;
 | |
| 
 | |
| typedef struct {
 | |
|         uint8_t       a[5];
 | |
|         VERSION       version;
 | |
|         uint8_t       b;
 | |
|         foo           d;
 | |
|         uint32_t      guard;
 | |
| } bar;
 | |
| #pragma pack(pop)
 | |
| 
 | |
| 
 | |
| unsigned barsize(void) {
 | |
|   // CHECK: ret i32 18
 | |
|   return sizeof(bar);
 | |
| }
 |