This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/21488] [4.0/4.1 regression] Not copy propagating single-argument PHIs causes out-of-ssa coalescing failure
- From: "steven at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 10 May 2005 14:14:54 -0000
- Subject: [Bug tree-optimization/21488] [4.0/4.1 regression] Not copy propagating single-argument PHIs causes out-of-ssa coalescing failure
- References: <20050510124823.21488.steven@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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