lra.c (lra_insn_recog_data_pool): New.
authorRichard Biener <rguenther@suse.de>
Thu, 21 Nov 2019 15:02:19 +0000 (15:02 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 21 Nov 2019 15:02:19 +0000 (15:02 +0000)
2019-11-21  Richard Biener  <rguenther@suse.de>

* lra.c (lra_insn_recog_data_pool): New.
(free_insn_recog_data): Adjust.
(finish_insn_recog_data): Release lra_insn_recog_data_pool.
(lra_set_insn_recog_data): Allocate from lra_insn_recog_data_pool.

From-SVN: r278556

gcc/ChangeLog
gcc/lra.c

index 5ffe57ddaf7b957d7acf29bc1784a42462d8d5ad..26831173ba777af4fa520cbbf70720762cd282b3 100644 (file)
@@ -1,3 +1,10 @@
+2019-11-21  Richard Biener  <rguenther@suse.de>
+
+       * lra.c (lra_insn_recog_data_pool): New.
+       (free_insn_recog_data): Adjust.
+       (finish_insn_recog_data): Release lra_insn_recog_data_pool.
+       (lra_set_insn_recog_data): Allocate from lra_insn_recog_data_pool.
+
 2019-11-21  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/92596
index 2c9a29a66a43334d9be649e01ff2959003ca6b4c..ec20aed449255112d75440e0fc04ee88b3b567bb 100644 (file)
--- a/gcc/lra.c
+++ b/gcc/lra.c
@@ -714,6 +714,10 @@ int lra_insn_recog_data_len;
 /* Map INSN_UID -> the insn recog data (NULL if unknown).  */
 lra_insn_recog_data_t *lra_insn_recog_data;
 
+/* Alloc pool we allocate entries for lra_insn_recog_data from.  */
+static object_allocator<class lra_insn_recog_data>
+  lra_insn_recog_data_pool ("insn recog data pool");
+
 /* Initialize LRA data about insns.  */
 static void
 init_insn_recog_data (void)
@@ -759,7 +763,7 @@ free_insn_recog_data (lra_insn_recog_data_t data)
     }
   free_insn_regs (data->regs);
   data->regs = NULL;
-  free (data);
+  lra_insn_recog_data_pool.remove (data);
 }
 
 /* Pools for copies.  */
@@ -778,6 +782,7 @@ finish_insn_recog_data (void)
   finish_insn_regs ();
   lra_copy_pool.release ();
   lra_insn_reg_pool.release ();
+  lra_insn_recog_data_pool.release ();
   free (lra_insn_recog_data);
 }
 
@@ -952,7 +957,7 @@ lra_set_insn_recog_data (rtx_insn *insn)
        /* It might be a new simple insn which is not recognized yet.  */
        INSN_CODE (insn) = icode = recog_memoized (insn);
     }
-  data = XNEW (class lra_insn_recog_data);
+  data = lra_insn_recog_data_pool.allocate ();
   lra_insn_recog_data[uid] = data;
   data->insn = insn;
   data->used_insn_alternative = LRA_UNKNOWN_ALT;