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