This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/28386] [4.1 regression] Wrong code with if condition in loop
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 15 Jul 2006 11:40:40 -0000
- Subject: [Bug rtl-optimization/28386] [4.1 regression] Wrong code with if condition in loop
- References: <bug-28386-1771@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #2 from rguenth at gcc dot gnu dot org 2006-07-15 11:40 -------
This is going wrong in RTL land. Tree optimization looks ok - we're merging
the
two IVs and using a wrapping unsigned IV going from 0xffffff81 to 127:
<bb 0>:
ivtmp.33D.1833 = 0ffffff81;
jD.1769 = 0;
<L0>:;
if (ivtmp.33D.1833 <= 127) goto <L1>; else goto <L2>;
<L1>:;
D.1775 = (intD.0) ivtmp.33D.1833;
D.1776 = sD.1765[D.1775][0];
printf (&"%d "[0], (intD.0) D.1776);
jD.1769 = jD.1769 + 1;
<L2>:;
ivtmp.33D.1833 = ivtmp.33D.1833 + 1;
if (ivtmp.33D.1833 != 128) goto <L0>; else goto <L4>;
<L4>:;
printf (&"\nj = %d\n"[0], jD.1769);
return 0;
of course, it's the particular choice of IVs that triggers the bug later on.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rguenth at gcc dot gnu dot
| |org
Component|tree-optimization |rtl-optimization
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28386