sparc.md (movdf): Avoid calling validize_mem during or after reload.
* config/sparc/sparc.md (movdf): Avoid calling validize_mem during or after reload. * gcc.c-torture/compile/20011109-1.c: New test. From-SVN: r46880
This commit is contained in:
parent
7ade1c9cd7
commit
a3d87e92eb
4 changed files with 65 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2001-11-09 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* config/sparc/sparc.md (movdf): Avoid calling validize_mem during
|
||||||
|
or after reload.
|
||||||
|
|
||||||
2001-11-09 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
2001-11-09 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||||
|
|
||||||
* doc/install.texi2html: Use $MAKEINFO --no-split.
|
* doc/install.texi2html: Use $MAKEINFO --no-split.
|
||||||
|
|
|
@ -3134,6 +3134,11 @@
|
||||||
&& fp_zero_operand (operands[1], DFmode))
|
&& fp_zero_operand (operands[1], DFmode))
|
||||||
goto movdf_is_ok;
|
goto movdf_is_ok;
|
||||||
|
|
||||||
|
/* We are able to build any DF constant in integer registers. */
|
||||||
|
if (REGNO (operands[0]) < 32
|
||||||
|
&& (reload_completed || reload_in_progress))
|
||||||
|
goto movdf_is_ok;
|
||||||
|
|
||||||
operands[1] = validize_mem (force_const_mem (GET_MODE (operands[0]),
|
operands[1] = validize_mem (force_const_mem (GET_MODE (operands[0]),
|
||||||
operands[1]));
|
operands[1]));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2001-11-09 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* gcc.c-torture/compile/20011109-1.c: New test.
|
||||||
|
|
||||||
2001-11-08 Geoffrey Keating <geoffk@redhat.com>
|
2001-11-08 Geoffrey Keating <geoffk@redhat.com>
|
||||||
|
|
||||||
* g++.old-deja/g++.bugs/900227_01.C: Change stormy16 to xstormy16.
|
* g++.old-deja/g++.bugs/900227_01.C: Change stormy16 to xstormy16.
|
||||||
|
|
51
gcc/testsuite/gcc.c-torture/compile/20011109-1.c
Normal file
51
gcc/testsuite/gcc.c-torture/compile/20011109-1.c
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
typedef struct { short x[4]; } S;
|
||||||
|
typedef struct { unsigned int a, b, c; S *d; } T;
|
||||||
|
|
||||||
|
S *(*foo) (T *, int, int, int, int);
|
||||||
|
unsigned short *(*bar)(const T *);
|
||||||
|
unsigned short baz(T *,const int);
|
||||||
|
|
||||||
|
T *die (void)
|
||||||
|
{
|
||||||
|
typedef struct { unsigned int a, b, e; double f, g; } U;
|
||||||
|
|
||||||
|
char h[8], i[2053], j[2053];
|
||||||
|
double k, l, m;
|
||||||
|
U n;
|
||||||
|
T *o;
|
||||||
|
unsigned short p;
|
||||||
|
int q, r;
|
||||||
|
long s;
|
||||||
|
unsigned short *t;
|
||||||
|
S *u;
|
||||||
|
unsigned char *v, *w;
|
||||||
|
unsigned int x;
|
||||||
|
|
||||||
|
o = 0;
|
||||||
|
for (x = 0; x < n.e; x++)
|
||||||
|
{
|
||||||
|
l = 1.0;
|
||||||
|
if (n.g - n.f <= 1.0)
|
||||||
|
l = ((1 << o->c) - 1) / (n.g - n.f);
|
||||||
|
v = w;
|
||||||
|
for (r = o->b - 1; r >= 0; r--)
|
||||||
|
{
|
||||||
|
u = foo (o, 0, r, o->a, 1);
|
||||||
|
if (!u)
|
||||||
|
break;
|
||||||
|
t = bar (o);
|
||||||
|
for (q = 0; q < (int) o->a; q++)
|
||||||
|
{
|
||||||
|
h[0] = *v;
|
||||||
|
s = *v++;
|
||||||
|
k = (double) s;
|
||||||
|
m = l*k;
|
||||||
|
p = m < 0 ? 0 : m > (1 << o->c) - 1 ? (1 << o->c) - 1 : m + 0.5;
|
||||||
|
p = baz (o,p);
|
||||||
|
t[q] = p;
|
||||||
|
*u++ = o->d[p];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return o;
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue