blob: a2cbf024c9c00a446bdd3e0e1ba6bdfac1d9c0d8 [file] [log] [blame]
/* PR target/30665: bug in cris.md peephole2 condition.
Original reduced testcase (fails on 3.2.1 derivate, not on trunk). */
/* { dg-do run } */
extern void abort (void);
extern void exit (int);
struct t
{
unsigned int a : 12;
unsigned int b : 12;
unsigned int dummy1 : 8;
};
struct area
{
int xa;
int xb;
};
struct c
{
struct area ii;
};
static struct c c;
void __attribute__ ((__noinline__)) g(int a)
{
if (a != 79)
abort ();
}
void __attribute__ ((__noinline__)) h(struct t tt)
{
if (tt.a != 20 || tt.b != 79)
abort ();
}
void __attribute__ ((__noinline__)) s(void);
int main(int argc, char **argv)
{
c.ii.xa = 20;
c.ii.xb = 79;
s();
exit (0);
}
void __attribute__ ((__noinline__)) s(void)
{
struct t ii_x = { .a = c.ii.xa, .b = c.ii.xb };
g(c.ii.xb);
h(ii_x);
}