The testcase I'll attach momentarily segfaults/ICEs at random places for a
checking enabled 4.1.1 compiler. Valgrind has more useful information as
==31272== Invalid read of size 4
==31272== at 0x82AC3C3: verify_ssa (tree-ssa.c:746)
==31272== by 0x8731ED8: execute_todo (passes.c:761)
...
==31272== Address 0x456FA58 is 8 bytes after a block of size 120 alloc'd
==31272== at 0x402064B: calloc (in
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==31272== by 0x88D0817: xcalloc (xmalloc.c:162)
==31272== by 0x82ABA7F: verify_ssa (tree-ssa.c:637)
which means we access definition_block[SSA_NAME_VERSION (op)] with
SSA_NAME_VERSION (op) >= num_ssa_names. Attaching with gdb at this point
also shows op being corrupt (0x433230c), so it may be well the iterator
being bogus.
It's hard to reduce the testcase further as it is very sensitive to number
of ssa names and allocation profile.
--
Summary: num_ssa_names inconsistent or immediate use iterator
wrong
Product: gcc
Version: 4.1.1
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rguenth at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27793