(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.c-torture/
execute/
20100430-1.c
       1  /* This used to generate unaligned accesses at -O2 because of IVOPTS.  */
       2  
       3  struct packed_struct
       4  {
       5    struct packed_struct1
       6    {
       7      unsigned char cc11;
       8      unsigned char cc12;
       9    } __attribute__ ((packed)) pst1;
      10    struct packed_struct2
      11    {
      12      unsigned char cc21;
      13      unsigned char cc22;
      14      unsigned short ss[104];
      15      unsigned char cc23[13];
      16    } __attribute__ ((packed)) pst2[4];
      17  } __attribute__ ((packed));
      18  
      19  typedef struct
      20  {
      21    int ii;
      22    struct packed_struct buf;
      23  } info_t;
      24  
      25  static unsigned short g;
      26  
      27  static void __attribute__((noinline))
      28  dummy (unsigned short s)
      29  {
      30    g = s;
      31  }
      32  
      33  static int
      34  foo (info_t *info)
      35  {
      36    int i, j;
      37  
      38    for (i = 0; i < info->buf.pst1.cc11; i++)
      39      for (j = 0; j < info->buf.pst2[i].cc22; j++)
      40        dummy (info->buf.pst2[i].ss[j]);
      41  
      42    return 0;
      43  }
      44  
      45  int main(void)
      46  {
      47    info_t info;
      48    info.buf.pst1.cc11 = 2;
      49    info.buf.pst2[0].cc22 = info.buf.pst2[1].cc22 = 8;
      50    return foo (&info);
      51  }