blob: e0ff422198dd321c7effa545a4e71f8c2b712051 [file] [log] [blame]
/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
/* { dg-skip-if "" { powerpc_elfv2 } } */
/* { dg-options "-O2" } */
/* This used to generate 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} } } */