aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorJ"orn Rennecke <joern.rennecke@superh.com>2004-05-20 11:45:26 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2004-05-20 12:45:26 +0100
commit965ccc5a1cfc6ad1df67c8e88cfe5f044272eb4f (patch)
tree9c02ce26170091fbc2cb20b4806f8a3edce09bd1 /gcc/reload1.c
parent98d784a90b1eaf326983efce3465531ba3b79d00 (diff)
downloadgcc-965ccc5a1cfc6ad1df67c8e88cfe5f044272eb4f.zip
gcc-965ccc5a1cfc6ad1df67c8e88cfe5f044272eb4f.tar.gz
gcc-965ccc5a1cfc6ad1df67c8e88cfe5f044272eb4f.tar.bz2
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
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index c848ce6..4282280 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -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)