This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/18694] [4.0 regression] loop miscompilation at -O1 (-ftree-ch)
- 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: 4 Dec 2004 14:40:48 -0000
- Subject: [Bug tree-optimization/18694] [4.0 regression] loop miscompilation at -O1 (-ftree-ch)
- References: <20041127224610.18694.falk@debian.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From steven at gcc dot gnu dot org 2004-12-04 14:40 -------
Simpler test case:
#include <stdlib.h>
#include <stdio.h>
typedef long *GEN;
static inline long *
stoi(long n)
{
long * z=(long *)malloc(sizeof(long));
*z=n;
return z;
}
void
divisors_bug(long * *t, long e)
{
long j;
long **d, **old_d, **act_d, **tmp;
d = t;
*++d = stoi(1);
for (old_d=t,j=e; j; j--)
{
for (act_d=d, tmp=old_d; tmp < act_d; )
*++d = stoi(**++tmp * 2);
old_d=act_d;
}
}
int main(void)
{
long *t[4];
long i;
divisors_bug(t,2);
for(i=1;i<4;i++)
printf("%ld ",*t[i]);
printf("\n");
return 0;
}
When I comment out the first PHI-OPT pass, this gives:
1 2 4
With PHI-OPT not commented out, I get:
1 2 0
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18694