FAIL: gfortran.dg/module_implicit_conversion.f90 -O (test for excess
errors)
$>gfortran module_implicit_conversion.f90 -O -std=gnu -S -o
module_implicit_conversion.s
module_implicit_conversion.f90:7.37:
end module module_implicit_conversion
1
Internal Error at (1):
write_atom(): Writing negative integer
in gfortran.log, it reports this error as the excess error.
I don't get the error message, but valgrind shows:
==12686== Conditional jump or move depends on uninitialised value(s)
==12686== at 0x43D3E6: write_atom (module.c:1326)
==12686== by 0x43E71D: mio_typespec (module.c:1851)
==12686== by 0x43EEF5: mio_symbol (module.c:2984)
==12686== by 0x440B65: write_symbol (module.c:3831)
==12686== by 0x440C39: write_symbol0 (module.c:3870)
==12686== by 0x440FD6: gfc_dump_module (module.c:4018)
==12686== by 0x44851E: gfc_parse_file (parse.c:3262)
==12686== by 0x468BDD: gfc_be_parse_file (f95-lang.c:307)
==12686== by 0x679B23: toplev_main (toplev.c:1050)
==12686== by 0x52BE943: (below main) (in /lib64/libc-2.5.so)
The error occurs for "__convert_r4_r8". At mio_typespec (module.c:1851)
one finds:
mio_integer (&ts->is_c_interop);
It seems as if is_c_interop is not initialized to zero for internal
symbols. If is_c_interop is by chance negative, I'm not surprised that
you get the error "write_atom(): Writing negative integer".
I would expect that this error occurs rather randomly.