------- Additional Comments From steven at gcc dot gnu dot org  2005-05-10 
14:14 -------
This is IVopts producing unresolvable overlapping live ranges again: 
 
t.c.t56.cunroll: 
foo () 
{ 
  unsigned int pretmp.1; 
  unsigned int pretmp.0; 
  unsigned int j; 
  unsigned int i; 
  unsigned int D.1572; 
  unsigned int D.1571; 
 
<bb 0>: 
 
  # i_12 = PHI <i_9(3), 1(0)>; 
<L0>:; 
  D.1571_7 = i_12 * 3; 
  j_8 = D.1571_7 + 2; 
  bar (j_8); 
  i_9 = i_12 + 1; 
  if (i_9 <= 29) goto <L7>; else goto <L2>; 
 
<L7>:; 
  goto <bb 1> (<L0>); 
 
  # j_3 = PHI <j_8(1)>; 
<L2>:; 
  return j_3; 
 
} 
 
 
t.c.t57.ivopts: 
foo () 
{ 
  unsigned int ivtmp.6; 
  unsigned int pretmp.1; 
  unsigned int pretmp.0; 
  unsigned int j; 
  unsigned int i; 
  unsigned int D.1572; 
  unsigned int D.1571; 
 
<bb 0>: 
 
  # ivtmp.6_1 = PHI <ivtmp.6_2(3), 5(0)>; 
<L0>:; 
  j_8 = ivtmp.6_1; 
  bar (j_8); 
  ivtmp.6_2 = ivtmp.6_1 + 3; 
  if (ivtmp.6_2 != 92) goto <L7>; else goto <L2>; 
 
<L7>:; 
  goto <bb 1> (<L0>); 
 
  # j_3 = PHI <j_8(1)>; 
<L2>:; 
  return j_3; 
 
} 
 
Because j_8 escapes from the loop and ivtmp is modified after j_8, we 
have this problem. 
 

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21488

Reply via email to