This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Doing a more "correct" patch like below shows that nearly all possible
"starts" are covered:

(gdb) p bitmap_count_bits(starts)
$2 = 500039
(gdb) p max_regno - lra_constraint_new_regno_start
$4 = 505207

so preserving semantics that way doesn't end up helping memory use :/

Index: gcc/lra-assigns.c
===================================================================
--- gcc/lra-assigns.c   (revision 258678)
+++ gcc/lra-assigns.c   (working copy)
@@ -429,12 +429,25 @@ init_live_reload_and_inheritance_pseudos
   for (p = 0; p < lra_live_max_point; p++)
     bitmap_initialize (&live_reload_and_inheritance_pseudos[p],
                       &live_reload_and_inheritance_pseudos_bitmap_obstack);
+  bitmap starts = BITMAP_ALLOC (NULL);
+  for (i = lra_constraint_new_regno_start; i < max_regno; i++)
+    for (r = lra_reg_info[i].live_ranges; r != NULL; r = r->next)
+      bitmap_set_bit (starts, r->start);
   for (i = lra_constraint_new_regno_start; i < max_regno; i++)
     {
       for (r = lra_reg_info[i].live_ranges; r != NULL; r = r->next)
-       for (p = r->start; p <= r->finish; p++)
-         bitmap_set_bit (&live_reload_and_inheritance_pseudos[p], i);
+       {
+         bitmap_iterator bi;
+         unsigned p;
+         EXECUTE_IF_SET_IN_BITMAP (starts, r->start, p, bi)
+           {
+             if (p > (unsigned)r->finish)
+               break;
+             bitmap_set_bit (&live_reload_and_inheritance_pseudos[p], i);
+           }
+       }
     }
+  BITMAP_FREE (starts);
 }

 /* Finalize data about living reload pseudos at any given program

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]