1  /* PR rtl-optimization/53942 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2" } */
       4  /* { dg-additional-options "-mtune=pentium2" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
       5  
       6  struct S
       7  {
       8    unsigned short w[3];
       9    unsigned int x, y;
      10  };
      11  
      12  struct S *baz (void);
      13  
      14  __attribute__ ((noinline))
      15  static unsigned char
      16  foo (struct S *x, unsigned char y)
      17  {
      18    unsigned char c = 0;
      19    unsigned char v = x->w[0];
      20    c |= v;
      21    v = ((x->w[1]) & (1 << y)) ? 1 : 0;
      22    c |= v << 1;
      23    v = ((x->w[2]) & 0xff) & (1 << y);
      24    c |= v << 2;
      25    return c;
      26  }
      27  
      28  void
      29  bar (void)
      30  {
      31    struct S *s = baz ();
      32    s->x = foo (s, 6);
      33    s->y = foo (s, 7);
      34  }