/* PR c/6223
   This testcase ICEd in internal check because a constant was not truncated
   for its mode.  */
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-options "-O2 -march=i686" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */

#if __INT_MAX__ > 32767

typedef struct
{
  unsigned a : 16;
  unsigned b : 16;
  unsigned c : 5;
  unsigned d : 2;
  unsigned e : 1;
  unsigned f : 4;
  unsigned g : 1;
  unsigned h : 1;
  unsigned i : 1;
  unsigned j : 1;
} T;

inline void
foo (T *x, unsigned int y)
{
  if ((x->j = (y >= 0x100000)))
    y >>= 12;
  x->a = y;
  x->f = (y >> 16);
}

void __attribute__((noinline))
bar (T *x)
{
}

void
baz (unsigned int x, unsigned char y)
{
  T t;

  foo (&t, x - 1);
  t.e = 1;
  t.c = y;
  t.g = 0;
  t.h = 0;
  t.i = (y & 0x40) != 0;
  if (x == 1)
    foo (&t, 1);
  bar (&t);
}

#endif /* __INT_MAX__ */
