[Bug rtl-optimization/63448] [4.9/5 Regression] ICE when compiling atlas 3.10.2

2014-10-23 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63448

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #11 from Jakub Jelinek jakub at gcc dot gnu.org ---
Should be fixed now.


[Bug rtl-optimization/63448] [4.9/5 Regression] ICE when compiling atlas 3.10.2

2014-10-15 Thread vmakarov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63448

--- Comment #8 from Vladimir Makarov vmakarov at gcc dot gnu.org ---
I already saw such problem.  It is chain of spills and reassignment of
non-reload pseudos.  Each pass considers only 1-2 pseudos and very few insns. 
We just need 2 more passes to finish RA for the test.  The current code of LRA
looping prevention is too conservative for the case.

Finally I have an idea how to solve this kind of problems.  The patch is on the
way.


[Bug rtl-optimization/63448] [4.9/5 Regression] ICE when compiling atlas 3.10.2

2014-10-15 Thread vmakarov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63448

--- Comment #9 from Vladimir Makarov vmakarov at gcc dot gnu.org ---
Author: vmakarov
Date: Wed Oct 15 15:48:33 2014
New Revision: 216270

URL: https://gcc.gnu.org/viewcvs?rev=216270root=gccview=rev
Log:
2014-10-15  Vladimir Makarov  vmaka...@redhat.com

PR rtl-optimization/63448
* lra-int.h (LRA_MAX_CONSTRAINT_ITERATION_NUMBER): Remove.
(LRA_MAX_ASSIGNMENT_ITERATION_NUMBER): New.
(LRA_MAX_INHERITANCE_PASSES): Use it.
(lra_constraint_iter_after_spill): Remove.
(lra_assignment_iter): New.
(lra_assignment_iter_after_spill): New.
* lra-assigns.c (lra_assignment_iter): New.
(lra_assignment_iter_after_spill): New.
(former_reload_pseudo_spill_p): New.
(spill_for): Set up former_reload_pseudo_spill_p.
(setup_live_pseudos_and_spill_after_risky): Ditto.
(assign_by_spills): Ditto.
(lra_assign): Increment lra_assignment_iter.  Print the iteration
number.  Reset former_reload_pseudo_spill_p.  Check
lra_assignment_iter_after_spill.
* lra.c (lra): Remove lra_constraint_iter_after_spill.  Initialize
lra_assignment_iter and lra_assignment_iter_after_spill.
* lra-constraints.c (lra_constraint_iter_after_spill): Remove.
(lra_constraints): Remove code with
lra_assignment_iter_after_spill.

2014-10-15  Vladimir Makarov  vmaka...@redhat.com

PR rtl-optimization/63448
* gcc.target/i386/pr63448.c: New test.


Added:
trunk/gcc/testsuite/gcc.target/i386/pr63448.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/lra-assigns.c
trunk/gcc/lra-constraints.c
trunk/gcc/lra-int.h
trunk/gcc/lra.c
trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/63448] [4.9/5 Regression] ICE when compiling atlas 3.10.2

2014-10-15 Thread vmakarov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63448

--- Comment #10 from Vladimir Makarov vmakarov at gcc dot gnu.org ---
Author: vmakarov
Date: Wed Oct 15 15:51:07 2014
New Revision: 216271

URL: https://gcc.gnu.org/viewcvs?rev=216271root=gccview=rev
Log:
2014-10-15  Vladimir Makarov  vmaka...@redhat.com

PR rtl-optimization/63448
* lra-int.h (LRA_MAX_CONSTRAINT_ITERATION_NUMBER): Remove.
(LRA_MAX_ASSIGNMENT_ITERATION_NUMBER): New.
(LRA_MAX_INHERITANCE_PASSES): Use it.
(lra_constraint_iter_after_spill): Remove.
(lra_assignment_iter): New.
(lra_assignment_iter_after_spill): New.
* lra-assigns.c (lra_assignment_iter): New.
(lra_assignment_iter_after_spill): New.
(former_reload_pseudo_spill_p): New.
(spill_for): Set up former_reload_pseudo_spill_p.
(setup_live_pseudos_and_spill_after_risky): Ditto.
(assign_by_spills): Ditto.
(lra_assign): Increment lra_assignment_iter.  Print the iteration
number.  Reset former_reload_pseudo_spill_p.  Check
lra_assignment_iter_after_spill.
* lra.c (lra): Remove lra_constraint_iter_after_spill.  Initialize
lra_assignment_iter and lra_assignment_iter_after_spill.
* lra-constraints.c (lra_constraint_iter_after_spill): Remove.
(lra_constraints): Remove code with
lra_assignment_iter_after_spill.

2014-10-15  Vladimir Makarov  vmaka...@redhat.com

PR rtl-optimization/63448
* gcc.target/i386/pr63448.c: New test.


Added:
branches/gcc-4_9-branch/gcc/testsuite/gcc.target/i386/pr63448.c
Modified:
branches/gcc-4_9-branch/gcc/ChangeLog
branches/gcc-4_9-branch/gcc/lra-assigns.c
branches/gcc-4_9-branch/gcc/lra-constraints.c
branches/gcc-4_9-branch/gcc/lra-int.h
branches/gcc-4_9-branch/gcc/lra.c
branches/gcc-4_9-branch/gcc/testsuite/ChangeLog


[Bug rtl-optimization/63448] [4.9/5 Regression] ICE when compiling atlas 3.10.2

2014-10-06 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63448

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P1
 CC||jakub at gcc dot gnu.org
   Target Milestone|--- |4.9.2
Summary|ICE when compiling atlas|[4.9/5 Regression] ICE when
   |3.10.2  |compiling atlas 3.10.2

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org ---
int a, d, e, g, h, j;
float b, c, k, l, m, n;
int *__restrict i;
void
foo (void)
{
  int o = e;
  int *p;
  float *q, *r = (float *) 0x1234000;
  float s, t, u, v, w, x;
  do
{
  for (a = o; a; a--)
{
  s += m;
  t += n;
  u += m;
  v += n;
  w += d;
  x += d;
  n = l;
  s += r[1];
  t += n;
  v += r[1];
  m = k * r[4];
  n = q[0] * r[4];
  s += m;
  m = q[1] * r[4];
  t += n;
  q += g;
  k = *q;
  n = q[1] * r[4];
  s += m;
  t += n;
  u += r[4];
  m = q[8] * r[4];
  q += 1;
  n = q[1] * r[4];
  s += m;
  m = q[4];
  t += n;
  q += g;
  w += m;
  m = k * r[4];
  s += m;
  t += q[0];
  m = q[1] * r[4];
  v += q[0];
  n = q[10] * r[4];
  s += m;
  t += n;
  u += b;
  m = q[8] * r[4];
  n = q[2] * r[4];
  s += m;
  m = q[4] * r[4];
  t += n;
  q++;
  n = q[2] * r[16];
  s += m;
  m = q[4];
  t += n;
  s += m;
  t += r[6];
  q += g;
  k = *q;
  w += m;
  m = k * r[20];
  x += r[16];
  n = q[1] * r[20];
  s += m;
  t += n;
  q += g;
  k = *q;
  w += m;
  m = k * r[2];
  n = q[1] * r[22];
  s += m;
  m = q[4];
  t += n;
  q += g;
  s += m;
  t += q[0];
  s += m;
  u += m;
  n = q[1] * r[22];
  s += m;
  m = q[4] * r[22];
  t += n;
  q += g;
  k = 1;
  w += m;
  c = q[10];
  x += r[22];
  s += m;
  t += r[22];
  u += m;
  v += r[22];
  n = q[10] * r[30];
  d = r[32];
  l = q[1];
  b = 0;
  w += m;
  m = r[32];
  x += n;
  r = 0;
}
  *i = s;
  p[0] = t;
  p[1] = u;
  p[6] = v;
  p[8] = w;
  p[10] = x;
}
  while (j);
}

at -O -m32 -std=c99 ICE started at r210824 aka PR60969 fix.