/test/Sema/pragma-pack-and-options-align.c
C | 42 lines | 33 code | 7 blank | 2 comment | 5 complexity | 5f2ae3fd5353e44a5fe51e4a23cf8e3c MD5 | raw file
- // RUN: %clang_cc1 -triple i686-apple-darwin9 %s -fsyntax-only -verify
- // Check that #pragma pack and #pragma options share the same stack.
- #pragma pack(push, 1)
- struct s0 {
- char c;
- int x;
- };
- extern int a[sizeof(struct s0) == 5 ? 1 : -1];
- #pragma options align=natural
- struct s1 {
- char c;
- int x;
- };
- extern int a[sizeof(struct s1) == 8 ? 1 : -1];
- #pragma options align=reset
- #pragma options align=native
- struct s1_1 {
- char c;
- int x;
- };
- extern int a[sizeof(struct s1_1) == 8 ? 1 : -1];
- #pragma pack(pop)
- struct s2 {
- char c;
- int x;
- };
- extern int a[sizeof(struct s2) == 5 ? 1 : -1];
- #pragma pack(pop)
- struct s3 {
- char c;
- int x;
- };
- extern int a[sizeof(struct s3) == 8 ? 1 : -1];
- /* expected-warning {{#pragma options align=reset failed: stack empty}} */ #pragma options align=reset
- /* expected-warning {{#pragma pack(pop, ...) failed: stack empty}} */ #pragma pack(pop)