http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48822
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to work|4.6.0 |
Known to fail| |4.6.0, 4.7.0
--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-05-02
11:39:58 UTC ---
Testcase that breaks since 4.5:
void foo (int *, int *);
int bar ()
{
int a = 0;
int b = 0;
if (b != 0)
{
int ax = a;
int bx = b;
while (bx != 0)
{
int tem = ax % bx;
ax = bx;
bx = tem;
}
}
foo (&a, &b);
}
4.4 has different PHI ordering and does
Value numbering bx_2 stmt = bx_2 = PHI <bx_5(3), tem_6(4)>
Setting value number of bx_2 to 0 (changed)
Value numbering ax_1 stmt = ax_1 = PHI <ax_4(3), bx_2(4)>
Setting value number of ax_1 to 0 (changed)
Value numbering tem_6 stmt = tem_6 = ax_1 % bx_2;
Setting value number of tem_6 to tem_6 (changed)
Value numbering bx_2 stmt = bx_2 = PHI <bx_5(3), tem_6(4)>
Setting value number of bx_2 to bx_2 (changed)
Value numbering ax_1 stmt = ax_1 = PHI <ax_4(3), bx_2(4)>
Setting value number of ax_1 to ax_1 (changed)
to avoid the issue.