1 /* Prove that pragma alignment handling works somewhat. */ 2 3 /* { dg-do run { target { ! default_packed } } } */ 4 5 extern void abort (void); 6 7 struct { 8 char one; 9 long two; 10 } defaultalign; 11 12 #if defined(__LP64__) 13 #pragma pack(8) 14 #else 15 #pragma pack(4) 16 #endif 17 struct { 18 char one; 19 long two; 20 } sixteen; 21 22 #pragma pack(1) 23 struct { 24 char one; 25 long two; 26 } two; 27 28 #pragma pack(2) 29 struct { 30 char one; 31 long two; 32 } three; 33 34 #pragma pack() 35 struct { 36 char one; 37 long two; 38 } resetalign; 39 main()40main() 41 { 42 if(sizeof(sixteen) < sizeof(defaultalign)) abort(); 43 if(sizeof(two) >= sizeof(defaultalign)) abort(); 44 if(sizeof(three) <= sizeof(two)) abort(); 45 if(sizeof(resetalign) != sizeof(defaultalign)) abort(); 46 return 0; 47 } 48