/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
/* { dg-skip-if "" { powerpc_elfv2 } } */
/* { dg-options "-O2" } */

/* This generates a rotate:DI by 44, with mask 0xf00, which is implemented
   using a rlwinm instruction.  We used to write 44 for the shift count
   there; it should be 12.  */

struct A
{
  int a : 4;
  int : 2;
  int b : 2;
  int : 2;
  int c : 2;
  int d : 1;
  int e;
};
struct B
{
  int a : 4;
} *a;
void bar (struct A);

void
foo (void)
{
  struct B b = a[0];
  struct A c;
  c.a = b.a;
  c.b = 1;
  c.c = 1;
  c.d = 0;
  bar (c);
}

/* { dg-final { scan-assembler-not {(?n)rlwinm.*,44,20,23} } } */
/* { dg-final { scan-assembler-times {(?n)rlwinm.*,12,20,23} 1 } } */
