1  /* PR c/52085 */
       2  /* { dg-do compile } */
       3  /* { dg-options "" } */
       4  
       5  #define SA(X) _Static_assert((X),#X)
       6  
       7  enum e1;
       8  enum e1 { A } __attribute__ ((__packed__));
       9  enum e2 { B } __attribute__ ((__packed__));
      10  SA (sizeof (enum e1) == sizeof (enum e2));
      11  SA (_Alignof (enum e1) == _Alignof (enum e2));
      12  
      13  enum e3;
      14  enum e3 { C = 256 } __attribute__ ((__packed__));
      15  enum e4 { D = 256 } __attribute__ ((__packed__));
      16  SA (sizeof (enum e3) == sizeof (enum e4));
      17  SA (_Alignof (enum e3) == _Alignof (enum e4));
      18  
      19  enum e5;
      20  enum e5 { E = __INT_MAX__ } __attribute__ ((__packed__));
      21  enum e6 { F = __INT_MAX__ } __attribute__ ((__packed__));
      22  SA (sizeof (enum e5) == sizeof (enum e6));
      23  SA (_Alignof (enum e5) == _Alignof (enum e6));
      24  
      25  enum e7;
      26  enum e7 { G } __attribute__ ((__mode__(__byte__)));
      27  enum e8 { H } __attribute__ ((__mode__(__byte__)));
      28  SA (sizeof (enum e7) == sizeof (enum e8));
      29  SA (_Alignof (enum e7) == _Alignof (enum e8));
      30  
      31  enum e9;
      32  enum e9 { I } __attribute__ ((__packed__, __mode__(__byte__)));
      33  enum e10 { J } __attribute__ ((__packed__, __mode__(__byte__)));
      34  SA (sizeof (enum e9) == sizeof (enum e10));
      35  SA (_Alignof (enum e9) == _Alignof (enum e10));
      36  
      37  enum e11;
      38  enum e11 { K } __attribute__ ((__mode__(__word__)));
      39  enum e12 { L } __attribute__ ((__mode__(__word__)));
      40  SA (sizeof (enum e11) == sizeof (enum e12));
      41  SA (_Alignof (enum e11) == _Alignof (enum e12));