1  /* { dg-options "-Wno-psabi" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
       2  
       3  /* Disable this test for 16-bit targets.  */
       4  
       5  #include <limits.h>
       6  
       7  #if !(defined __GNUC__) || (INT_MAX > 32767)
       8  
       9  #include "compat-common.h"
      10  #include "struct-align-2.h"
      11  
      12  #define SETUP(NAME,V1,V2,V3)					\
      13  struct outer_##NAME {						\
      14    int i;							\
      15    struct epoll_event_##NAME ee;					\
      16  };								\
      17  								\
      18  unsigned int v1_##NAME = V1;					\
      19  unsigned int v2_##NAME = V2;					\
      20  unsigned long long v3_##NAME = V3;				\
      21  								\
      22  struct outer_##NAME s_##NAME[2] =				\
      23   { {V1, { V2, V3 } }, { V1, { V2, V3 } } };			\
      24  								\
      25  extern void test_##NAME (void);					\
      26  extern void checkp_##NAME (struct outer_##NAME *);		\
      27  extern void checkg_##NAME (void);				\
      28  								\
      29  void								\
      30  pass_##NAME (struct outer_##NAME s)				\
      31  {								\
      32    checkp_##NAME (&s);						\
      33  }								\
      34  								\
      35  struct outer_##NAME						\
      36  return_##NAME (void)						\
      37  {								\
      38    return s_##NAME[0];						\
      39  }
      40  
      41  #define CHECK(NAME)						\
      42    test_##NAME()
      43  
      44  SETUP (orig,101, 102, 0x0101010101010101ULL)
      45  #ifndef SKIP_ATTRIBUTE
      46  SETUP (structmax, 103, 104, 0x1212121212121212ULL)
      47  SETUP (struct4, 105, 106, 0x2323232323232323ULL)
      48  SETUP (struct8, 107, 108, 0x3434343434343434ULL)
      49  SETUP (data4, 109, 110, 0x4545454545454545ULL)
      50  SETUP (data8, 111, 112, 0x5656565656565656ULL)
      51  SETUP (p, 113, 114, 0x6767676767676767ULL)
      52  SETUP (pstruct4, 115, 116, 0x7878787878787878ULL)
      53  SETUP (pstruct8, 117, 118, 0x8989898989898989ULL)
      54  SETUP (pdata4, 119, 120, 0x9A9A9A9A9A9A9A9AULL)
      55  SETUP (pdata8, 121, 122, 0xABABABABABABABABULL)
      56  #endif
      57  
      58  void
      59  struct_align_2_x (void)
      60  {
      61    DEBUG_INIT
      62  
      63    CHECK (orig);
      64  #ifndef SKIP_ATTRIBUTE
      65    CHECK (structmax);
      66    CHECK (struct4);
      67    CHECK (struct8);
      68    CHECK (data4);
      69    CHECK (data8);
      70    CHECK (p);
      71    CHECK (pstruct4);
      72    CHECK (pstruct8);
      73    CHECK (pdata4);
      74    CHECK (pdata8);
      75  #endif
      76  
      77    DEBUG_FINI
      78  
      79    if (fails != 0)
      80      abort ();
      81  }
      82  
      83  #else
      84  
      85  void struct_align_2_x (void) {}
      86  
      87  #endif  /* INT_MAX */