re PR target/30665 (peephole2 misapplied on postinc mem)
PR target/30665 * gcc.dg/torture/pr30665-1.c, gcc.dg/torture/pr30665-2.c: New tests. From-SVN: r121611
This commit is contained in:
parent
9e006df67f
commit
b81aec1b9d
|
@ -1,3 +1,8 @@
|
|||
2007-02-05 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
PR target/30665
|
||||
* gcc.dg/torture/pr30665-1.c, gcc.dg/torture/pr30665-2.c: New tests.
|
||||
|
||||
2007-02-04 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||
|
||||
PR fortran/30611
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
/* PR target/30665: bug in cris.md peephole2 condition.
|
||||
Testcase for trunk. */
|
||||
/* { dg-do run } */
|
||||
|
||||
extern void abort (void);
|
||||
extern void exit (int);
|
||||
|
||||
int __attribute__ ((__noinline__)) f (unsigned *p, int *x)
|
||||
{
|
||||
int y = *p++ & 0xfff;
|
||||
*x++ = y;
|
||||
*x = *p;
|
||||
return y;
|
||||
}
|
||||
|
||||
int main (void)
|
||||
{
|
||||
unsigned u[2] = { 0x3aad, 0x5ad1 };
|
||||
int x[2] = {17689, 23456};
|
||||
|
||||
if (f (u, x) != 0xaad || x[0] != 0xaad || x[1] != 0x5ad1)
|
||||
abort ();
|
||||
exit (0);
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
/* 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);
|
||||
}
|
Loading…
Reference in New Issue