This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/17560] [4.0 Regression] Infinite recursion in tree-scalar-evolution with -Os
- From: "sebastian dot pop at cri dot ensmp dot fr" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 8 Oct 2004 12:07:59 -0000
- Subject: [Bug tree-optimization/17560] [4.0 Regression] Infinite recursion in tree-scalar-evolution with -Os
- References: <20040919165202.17560.kherron+gcc@fmailbox.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From sebastian dot pop at cri dot ensmp dot fr 2004-10-08 12:07 -------
Subject: Re: [4.0 Regression] Infinite recursion in tree-scalar-evolution with -Os
Here is what the code looks like at the level of my analyzer.
loop_0
{
bb_0 (preds = {bb_-1}, succs = {bb_0bb_0})
{
<bb 0>:
if (i_4 != 0) goto <L0>; else goto <L6>;
}
bb_1 (preds = {bb_0}, succs = {bb_1})
{
<L0>:;
i_7 = i_4 + 1;
}
bb_2 (preds = {bb_5bb_1}, succs = {bb_2})
{
# i_1 = PHI <i_2(5), i_7(1)>;
L:;
goto <bb 4> (<L5>);
}
bb_5 (preds = {bb_0bb_4}, succs = {bb_5bb_5})
{
# i_2 = PHI <i_4(0), i_1(4)>;
<L6>:;
if (i_2 != 1) goto L; else goto <L8>;
}
bb_6 (preds = {bb_5}, succs = {bb_6})
{
<L8>:;
return;
}
loop_1
{
bb_3 (preds = {bb_4}, succs = {bb_3})
{
<L4>:;
j_6 = j_3 + 1;
}
bb_4 (preds = {bb_3bb_2}, succs = {bb_4bb_4})
{
# j_3 = PHI <0(2), j_6(3)>;
<L5>:;
if (j_3 < i_1) goto <L4>; else goto <L6>;
}
}
}
The problem is that we have a cycle "i_1 -> i_2 -> i_1" outside any
loop, and I'm not sure about the semantics of this representation.
By the way, is this a valid SSA form?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17560