Seek debugging tip for crash at nullify call
Paul Thomas
paulthomas2@wanadoo.fr
Sat Oct 7 16:34:00 GMT 2006
Tobias,
Compile with -fdump-tree-original and -fbounds-check. The loop is
rendered as:
i = 1;
if (i <= 2)
{
while (1)
{
{
logical4 D.932;
{
int4 D.930;
(*(struct projector_t[0:] *) p.data)[p.dim[0].stride *
D.930 + p.o ffset].bra.data = 0B;
D.930 = i;
if ((logical4) __builtin_expect (p.dim[0].lbound > D.930, 0))
{
_gfortran_runtime_error ("Array reference out of
bounds for ar ray \'p\', lower bound of dimension 1 exceeded (in file
\'burnus1007.f90\', at l ine 12)");
}
else
{
(void) 0;
}
if ((logical4) __builtin_expect (p.dim[0].ubound < D.930, 0))
{
_gfortran_runtime_error ("Array reference out of
bounds for ar ray \'p\', upper bound of dimension 1 exceeded (in file
\'burnus1007.f90\', at l ine 12)");
}
else
{
(void) 0;
}
}
{
int4 D.931;
(*(struct projector_t[0:] *) p.data)[p.dim[0].stride *
D.931 + p.o ffset].ket.data = 0B;
D.931 = i;
if ((logical4) __builtin_expect (p.dim[0].lbound > D.931, 0))
{
_gfortran_runtime_error ("Array reference out of
bounds for ar ray \'p\', lower bound of dimension 1 exceeded (in file
\'burnus1007.f90\', at l ine 13)");
}
else
{
(void) 0;
}
if ((logical4) __builtin_expect (p.dim[0].ubound < D.931, 0))
{
_gfortran_runtime_error ("Array reference out of
bounds for ar ray \'p\', upper bound of dimension 1 exceeded (in file
\'burnus1007.f90\', at l ine 13)");
}
else
{
(void) 0;
}
}
L.2:;
D.932 = i == 2;
i = i + 1;
if (D.932) goto L.3; else (void) 0;
}
}
}
else
{
(void) 0;
}
L.3:;
}
Look at the use of the temporary D.931, in the index expression, before
it is set to i!
Without -fbounds-check, i itself is used for the index.
Cheers
Paul
More information about the Fortran
mailing list