1*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li typedef unsigned char uint8_t; 4*67e74705SXin Li typedef unsigned short uint16_t; 5*67e74705SXin Li typedef unsigned int uint32_t; 6*67e74705SXin Li 7*67e74705SXin Li #pragma pack(push, 1) 8*67e74705SXin Li typedef struct 9*67e74705SXin Li { 10*67e74705SXin Li uint32_t a; 11*67e74705SXin Li } foo; 12*67e74705SXin Li 13*67e74705SXin Li typedef struct { 14*67e74705SXin Li uint8_t major; 15*67e74705SXin Li uint8_t minor; 16*67e74705SXin Li uint16_t build; 17*67e74705SXin Li } VERSION; 18*67e74705SXin Li 19*67e74705SXin Li typedef struct { 20*67e74705SXin Li uint8_t a[5]; 21*67e74705SXin Li VERSION version; 22*67e74705SXin Li uint8_t b; 23*67e74705SXin Li foo d; 24*67e74705SXin Li uint32_t guard; 25*67e74705SXin Li } bar; 26*67e74705SXin Li #pragma pack(pop) 27*67e74705SXin Li 28*67e74705SXin Li barsize(void)29*67e74705SXin Liunsigned barsize(void) { 30*67e74705SXin Li // CHECK: ret i32 18 31*67e74705SXin Li return sizeof(bar); 32*67e74705SXin Li } 33