1 /* { dg-do compile } */
2 
3 /* Copyright (C) 2003 Free Software Foundation, Inc.
4    Contributed by Nathan Sidwell 15 Jul 2003 <nathan@codesourcery.com> */
5 
6 /* you should not be able to pack a typedef to a struct, only the
7    underlying struct can be packed.  */
8 
9 /* ok */
10 struct u1
11 {
12   char field1;
13   short field2;
14   int field3;
15 };
16 
17 /* ok */
18 typedef struct p1 {
19    char  field1;
20    short field2;
21    int field3;
22 } __attribute__ ((packed)) p1_t1;
23 
24 /* ok */
25 typedef struct __attribute__ ((packed)) p2 {
26    char  field1;
27    short field2;
28    int field3;
29 } p2_t1;
30 
31 int ary1[sizeof (struct p1) == sizeof (p1_t1) ? 1 : -1];
32 int ary2[sizeof (struct p2) == sizeof (p2_t1) ? 1 : -1];
33 int ary3[sizeof (struct p1) == sizeof (struct p2) ? 1 : -1];
34 
35 /* not ok */
36 typedef struct u1 __attribute__ ((packed)) u1_t1; /* { dg-warning "attribute ignored" }*/
37 typedef struct u1 u1_t2 __attribute__ ((packed)); /* { dg-warning "attribute ignored" }*/
38 
39 typedef struct p3 {
40    char  field1;
41    short field2;
42    int field3;
43 } p3_t1 __attribute__ ((packed)); /* { dg-warning "attribute ignored" }*/
44 
45