------- Additional Comments From Thomas dot Koenig at online dot de 2005-01-28
14:29 -------
The inner loop does not terminate in this example,
until a segfault is hit.
$ cat sl5-error.c
#include <stdio.h>
void foo(float * x);
int main()
{
float x[4];
foo (x);
return 0;
}
void foo (float *x)
{
int i,j,k;
float temp;
static float t16[16]={1.,2.,3.,4.,5.,6.,7.,8.,9.,
10.,11.,12.,13.,14.,15.,16.};
static float tmp[4]={0.,0.,0.,0.};
for (i=0; i<4; i++) {
k = 3 - i;
temp = t16[5*k];
for(j=k+1; j<4; j++) {
printf("i=%d, j=%d, k=%d\n",i,j,k);
tmp[k] = t16[k+ j*4] * temp;
}
}
x[0] = tmp[0];
x[1] = tmp[1];
x[2] = tmp[2];
x[3] = tmp[3];
}
$ gcc sl5-error.c
$ ./a.out
i=1, j=3, k=2
i=2, j=2, k=1
i=2, j=3, k=1
i=3, j=1, k=0
i=3, j=2, k=0
i=3, j=3, k=0
$ gcc -O1 sl5-error.c
$ ./a.out
i=1, j=3, k=2
i=2, j=2, k=1
i=2, j=3, k=1
i=2, j=4, k=1
i=2, j=5, k=1
i=2, j=6, k=1
... and so on, until
i=2, j=803, k=1
i=2, j=804, k=1
i=2, j=805, k=1
i=2, j=806, k=1
i=2, j=807, k=1
i=2, j=808, k=1
Segmentation fault
$ gcc -v ; gcc -dumpmachine
Using built-in specs.
Configured with: ../gcc-4.0-20050123/configure --prefix=/home/zfkts
--enable-languages=c,f95
Thread model: posix
gcc version 4.0.0 20050123 (experimental)
ia64-unknown-linux-gnu
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18977