[Bug rtl-optimization/97554] ICE: during RTL pass: cprop /segfault in sbitmap

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Oct 26 08:05:33 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97554

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2020-10-26
             Status|UNCONFIRMED                 |ASSIGNED

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.  We're doing

#1  0x0000000002343be5 in alloc_cprop_mem (n_blocks=249747, n_sets=137435)
    at /home/rguenther/src/gcc2/gcc/cprop.c:557
557       cprop_avloc = sbitmap_vector_alloc (n_blocks, n_sets);

where sbitmap_vector_alloc continues to use 'int' for things like size:

139     sbitmap *
140     sbitmap_vector_alloc (unsigned int n_vecs, unsigned int n_elms)
141     {
142       unsigned int i, bytes, offset, elm_bytes, size, amt, vector_bytes;
143       sbitmap *bitmap_vector;
144

and eventually 'amt' overflows:

  amt = vector_bytes + (n_vecs * elm_bytes);

(gdb) p vector_bytes
$8 = 1997976
(gdb) p n_vecs
$9 = 249747
(gdb) p elm_bytes
$10 = 17192
(gdb) p amt
$11 = 681104

I'll fix that part.


More information about the Gcc-bugs mailing list