Makefile.in (GTFILES): Add $(srcdir)/reload.h.
* Makefile.in (GTFILES): Add $(srcdir)/reload.h. * gengtype.c (open_base_files): Include reload.h in ifiles. * reload.h (reg_equiv_memory_loc_varray): Declare. * reload1.c (reg_equiv_memory_loc_varray): New variable. (init_reload): Initialize it. (reload): Instead of freeing reg_equiv_memory_loc, 'grow' reg_equiv_memory_loc_varray to size 0. * ra.c (reg_alloc): Allocate reg_equiv_memory_loc by growing reg_equiv_memory_loc_varray to the desired size. * passes.c (rest_of_handle_old_regalloc): Likewise. * reload.c: Amend comment on calling init_reload. From-SVN: r82050
This commit is contained in:
parent
98d784a90b
commit
965ccc5a1c
|
@ -1,3 +1,17 @@
|
|||
2004-05-20 J"orn Rennecke <joern.rennecke@superh.com>
|
||||
|
||||
* Makefile.in (GTFILES): Add $(srcdir)/reload.h.
|
||||
* gengtype.c (open_base_files): Include reload.h in ifiles.
|
||||
* reload.h (reg_equiv_memory_loc_varray): Declare.
|
||||
* reload1.c (reg_equiv_memory_loc_varray): New variable.
|
||||
(init_reload): Initialize it.
|
||||
(reload): Instead of freeing reg_equiv_memory_loc, 'grow'
|
||||
reg_equiv_memory_loc_varray to size 0.
|
||||
* ra.c (reg_alloc): Allocate reg_equiv_memory_loc by
|
||||
growing reg_equiv_memory_loc_varray to the desired size.
|
||||
* passes.c (rest_of_handle_old_regalloc): Likewise.
|
||||
* reload.c: Amend comment on calling init_reload.
|
||||
|
||||
2004-05-20 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config/c4x/c4x.h (INITIALIZE_TRAMPOLINE): Replace 'tramp'
|
||||
|
|
|
@ -2265,7 +2265,7 @@ GTFILES = $(srcdir)/input.h $(srcdir)/coretypes.h $(srcdir)/cpplib.h \
|
|||
$(srcdir)/optabs.h $(srcdir)/tree.h $(srcdir)/libfuncs.h $(srcdir)/hashtable.h \
|
||||
$(srcdir)/real.h $(srcdir)/varray.h $(srcdir)/insn-addr.h $(srcdir)/hwint.h \
|
||||
$(srcdir)/cselib.h $(srcdir)/basic-block.h $(srcdir)/cgraph.h \
|
||||
$(srcdir)/c-common.h $(srcdir)/c-tree.h \
|
||||
$(srcdir)/c-common.h $(srcdir)/c-tree.h $(srcdir)/reload.h \
|
||||
$(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c $(srcdir)/cgraph.c \
|
||||
$(srcdir)/dbxout.c $(srcdir)/dwarf2out.c $(srcdir)/dwarf2asm.c \
|
||||
$(srcdir)/dojump.c \
|
||||
|
|
|
@ -1100,7 +1100,7 @@ open_base_files (void)
|
|||
"function.h", "insn-config.h", "expr.h", "hard-reg-set.h",
|
||||
"basic-block.h", "cselib.h", "insn-addr.h", "optabs.h",
|
||||
"libfuncs.h", "debug.h", "ggc.h", "cgraph.h",
|
||||
"tree-alias-type.h", "tree-flow.h",
|
||||
"tree-alias-type.h", "tree-flow.h", "reload.h",
|
||||
NULL
|
||||
};
|
||||
const char *const *ifp;
|
||||
|
|
|
@ -624,7 +624,8 @@ rest_of_handle_old_regalloc (tree decl, rtx insns)
|
|||
allocate_reg_info (max_regno, FALSE, TRUE);
|
||||
|
||||
/* And the reg_equiv_memory_loc array. */
|
||||
reg_equiv_memory_loc = xcalloc (max_regno, sizeof (rtx));
|
||||
VARRAY_GROW (reg_equiv_memory_loc_varray, max_regno);
|
||||
reg_equiv_memory_loc = &VARRAY_RTX (reg_equiv_memory_loc_varray, 0);
|
||||
|
||||
allocate_initial_values (reg_equiv_memory_loc);
|
||||
|
||||
|
|
3
gcc/ra.c
3
gcc/ra.c
|
@ -887,7 +887,8 @@ reg_alloc (void)
|
|||
"after allocation/spilling, before reload", NULL);
|
||||
|
||||
/* Allocate the reg_equiv_memory_loc array for reload. */
|
||||
reg_equiv_memory_loc = xcalloc (max_regno, sizeof (rtx));
|
||||
VARRAY_GROW (reg_equiv_memory_loc_varray, max_regno);
|
||||
reg_equiv_memory_loc = &VARRAY_RTX (reg_equiv_memory_loc_varray, 0);
|
||||
/* And possibly initialize it. */
|
||||
allocate_initial_values (reg_equiv_memory_loc);
|
||||
/* And one last regclass pass just before reload. */
|
||||
|
|
|
@ -27,6 +27,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|||
ought to be used instead.
|
||||
|
||||
Before processing the first insn of the function, call `init_reload'.
|
||||
init_reload actually has to be called earlier anyway.
|
||||
|
||||
To scan an insn, call `find_reloads'. This does two things:
|
||||
1. sets up tables describing which values must be reloaded
|
||||
|
|
|
@ -164,6 +164,7 @@ extern struct reload rld[MAX_RELOADS];
|
|||
extern int n_reloads;
|
||||
#endif
|
||||
|
||||
extern GTY (()) struct varray_head_tag *reg_equiv_memory_loc_varray;
|
||||
extern rtx *reg_equiv_constant;
|
||||
extern rtx *reg_equiv_memory_loc;
|
||||
extern rtx *reg_equiv_address;
|
||||
|
|
|
@ -102,6 +102,10 @@ rtx *reg_equiv_constant;
|
|||
is transferred to either reg_equiv_address or reg_equiv_mem. */
|
||||
rtx *reg_equiv_memory_loc;
|
||||
|
||||
/* We allocate reg_equiv_memory_loc inside a varray so that the garbage
|
||||
collector can keep track of what is inside. */
|
||||
varray_type reg_equiv_memory_loc_varray;
|
||||
|
||||
/* Element N is the address of stack slot to which pseudo reg N is equivalent.
|
||||
This is used when the address is not valid as a memory address
|
||||
(because its displacement is too big for the machine.) */
|
||||
|
@ -482,6 +486,7 @@ init_reload (void)
|
|||
|
||||
INIT_REG_SET (&spilled_pseudos);
|
||||
INIT_REG_SET (&pseudos_counted);
|
||||
VARRAY_RTX_INIT (reg_equiv_memory_loc_varray, 0, "reg_equiv_memory_loc");
|
||||
}
|
||||
|
||||
/* List of insn chains that are currently unused. */
|
||||
|
@ -1236,8 +1241,7 @@ reload (rtx first, int global)
|
|||
if (reg_equiv_constant)
|
||||
free (reg_equiv_constant);
|
||||
reg_equiv_constant = 0;
|
||||
if (reg_equiv_memory_loc)
|
||||
free (reg_equiv_memory_loc);
|
||||
VARRAY_GROW (reg_equiv_memory_loc_varray, 0);
|
||||
reg_equiv_memory_loc = 0;
|
||||
|
||||
if (offsets_known_at)
|
||||
|
|
Loading…
Reference in New Issue