PATCH to remove unnecessary NOTE_INSN_DELETED

Jeffrey A Law law@cygnus.com
Tue Nov 30 23:59:00 GMT 1999


  In message < 9911040224.AA21856@vlsi1.ultra.nyu.edu >you write:
  >     BTW, it's also possible to do regno squashing; those tend to be sparse 
  > too.
  > 
  > Yes, but there's the same issue with insn renumbering: it makes debugging
  > *much* more difficult.
Yes, which is precisely why we should be able to turn off both.  A translation
table is too painful to use (IMHO).  In those rare cases where we need to
debug these monsters, we just bite the bullet and eat the extra memory needed
when we do not squash uids & regnos.


  >     The major benefit of reg squashing is reducing the size of the
  >     conflict matrix in the register allocators (it's square on the number
  >     of pseudos).
  > 
  > No, it's the square of the number of *allocnos*, which are the number of
  > registers *in use*.  That already takes care of the spareness problem.
Opps.  Yes you're right.  It's only the mapping from regno to allocnos that
would be helped in global.

I still suspect there's significant saving to realize from regno squashing a
quick grep shows:

global.c:  reg_allocno = (int *) xmalloc (max_regno * sizeof (int));
global.c:  reg_may_share = (int *) xcalloc (max_regno, sizeof (int));
integrate.c:  map->reg_map = (rtx *) xcalloc (max_regno, sizeof (rtx));
local-alloc.c:  reg_qty = (int *) xmalloc (max_regno * sizeof (int));
local-alloc.c:  reg_offset = (char *) xmalloc (max_regno * sizeof (char));
local-alloc.c:  reg_next_in_qty = (int *) xmalloc(max_regno * sizeof (int));
local-alloc.c:    = (char *) alloca (max_regno * sizeof *reg_equiv_replace);
local-alloc.c:  reg_equiv_init_insns = (rtx *) alloca (max_regno * sizeof 
(rtx));
local-alloc.c:  reg_equiv_replacement = (rtx *) alloca (max_regno * sizeof 
(rtx));
reload1.c:  reg_equiv_constant = (rtx *) xcalloc (max_regno, sizeof (rtx));
reload1.c:  reg_equiv_memory_loc = (rtx *) xcalloc (max_regno, sizeof (rtx));
reload1.c:  reg_equiv_mem = (rtx *) xcalloc (max_regno, sizeof (rtx));
reload1.c:  reg_equiv_init = (rtx *) xcalloc (max_regno, sizeof (rtx));
reload1.c:  reg_equiv_address = (rtx *) xcalloc (max_regno, sizeof (rtx));
reload1.c:  reg_max_ref_width = (int *) xcalloc (max_regno, sizeof (int));
reload1.c:  reg_old_renumber = (short *) xcalloc (max_regno, sizeof (short));
reload1.c:    = (HARD_REG_SET *) xmalloc (max_regno * sizeof (HARD_REG_SET));
reload1.c:    = (HARD_REG_SET *) xcalloc (max_regno, sizeof (HARD_REG_SET));
reload1.c:  reg_last_reload_reg = (rtx *) alloca (max_regno * sizeof (rtx));
reload1.c:  reg_has_output_reload = (char *) alloca (max_regno);





More information about the Gcc-patches mailing list