47 lines · c
1// RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -fsyntax-only -verify -ffreestanding2// expected-no-diagnostics3// PR95604// Check #pragma pack handling with bitfields.5 6#include <stddef.h>7#pragma pack(2)8 9struct s0 {10 char f1;11 unsigned f2 : 32;12 char f3;13};14extern int check[sizeof(struct s0) == 6 ? 1 : -1];15 16struct s1 {17 char f1;18 unsigned : 0;19 char f3;20};21extern int check[sizeof(struct s1) == 5 ? 1 : -1];22 23struct s2 {24 char f1;25 unsigned : 0;26 unsigned f3 : 8;27 char f4;28};29extern int check[sizeof(struct s2) == 6 ? 1 : -1];30 31struct s3 {32 char f1;33 unsigned : 0;34 unsigned f3 : 16;35 char f4;36};37extern int check[sizeof(struct s3) == 8 ? 1 : -1];38extern int check[offsetof(struct s3, f4) == 6 ? 1 : -1];39 40struct s4 {41 char f1;42 unsigned f2 : 8;43 char f3;44};45extern int check[sizeof(struct s4) == 4 ? 1 : -1];46extern int check[offsetof(struct s4, f3) == 2 ? 1 : -1];47