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