145b40147SAlex Lorenz 245b40147SAlex Lorenz #ifndef NO_RECORD_1 345b40147SAlex Lorenz struct ReceivesPragma { }; 445b40147SAlex Lorenz #endif 545b40147SAlex Lorenz 645b40147SAlex Lorenz #ifdef SET_FIRST_HEADER 745b40147SAlex Lorenz #pragma pack (16) 845b40147SAlex Lorenz #ifndef SET_SECOND_HEADER 945b40147SAlex Lorenz // expected-note@-2 2 {{previous '#pragma pack' directive that modifies alignment is here}} 1045b40147SAlex Lorenz #else 1145b40147SAlex Lorenz // expected-note@-4 1 {{previous '#pragma pack' directive that modifies alignment is here}} 1245b40147SAlex Lorenz #endif 1345b40147SAlex Lorenz // expected-warning@+3 {{non-default #pragma pack value changes the alignment of struct or union members in the included file}} 1445b40147SAlex Lorenz #endif 1545b40147SAlex Lorenz 1645b40147SAlex Lorenz #include "pragma-pack2.h" 1745b40147SAlex Lorenz 1845b40147SAlex Lorenz #ifdef SET_SECOND_HEADER 19*0090753eSMatt Davis // expected-warning@-3 {{the current #pragma pack alignment value is modified in the included file}} 2045b40147SAlex Lorenz #endif 2145b40147SAlex Lorenz 2245b40147SAlex Lorenz #ifdef PUSH_POP_FIRST_HEADER 2345b40147SAlex Lorenz // This is fine, we don't change the current value. 2445b40147SAlex Lorenz #pragma pack (push, 4) 2545b40147SAlex Lorenz 2645b40147SAlex Lorenz #pragma pack (pop) 2745b40147SAlex Lorenz #endif 28