lra.c (lra_insn_recog_data_pool): New.

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
This commit is contained in:
Richard Biener 2019-11-21 15:02:19 +00:00 committed by Richard Biener
parent 7c327e2d4d
commit 033bd26e28
2 changed files with 14 additions and 2 deletions

View 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

View File

@ -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;