[Bug rtl-optimization/85072] g++ -O1 consumes all memory

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Mar 26 08:44:00 GMT 2018


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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |compile-time-hog,
                   |                            |memory-hog, ra
             Target|                            |x86_64-*-*
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2018-03-26
                 CC|                            |vmakarov at gcc dot gnu.org
          Component|c++                         |rtl-optimization
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.  It's LRA not finishing lra_assign () but eating memory in this
loop:

#2  0x0000000000a2e7f1 in init_live_reload_and_inheritance_pseudos ()
    at /space/rguenther/src/svn/gcc-7-branch/gcc/lra-assigns.c:436
436               bitmap_set_bit (&live_reload_and_inheritance_pseudos[p], i);
(gdb) l
431                           
&live_reload_and_inheritance_pseudos_bitmap_obstack);
432       for (i = lra_constraint_new_regno_start; i < max_regno; i++)
433         {
434           for (r = lra_reg_info[i].live_ranges; r != NULL; r = r->next)
435             for (p = r->start; p <= r->finish; p++)
436               bitmap_set_bit (&live_reload_and_inheritance_pseudos[p], i);
437         }

with

(gdb) p lra_constraint_new_regno_start
$2 = 505484
(gdb) p max_regno
$3 = 1010691

and just an example for one iteration:

(gdb) p r->start
$4 = 149038
(gdb) p r->finish
$5 = 757257

(gdb) p lra_live_max_point
$7 = 1013502

Looks like representing live_reload_and_inheritance_pseudos explicitely
for a testcase like this is a bad idea.

Vlad?  Is there a way to make LRA cheaper at -O1, like turning off
inheritance?  Note the basic-blocks in this testcase are huge.


More information about the Gcc-bugs mailing list