aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-08-08 01:28:00 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-08-08 01:28:00 -0700
commit2a3e384f15e6f10fc62b27c6671d899b083fed97 (patch)
treebef654b1dd4f2327e04b2250df973c7f458204ae /gcc/reload1.c
parent43d1e05928a16e48e017625e8dad6aeca2a31282 (diff)
downloadgcc-2a3e384f15e6f10fc62b27c6671d899b083fed97.zip
gcc-2a3e384f15e6f10fc62b27c6671d899b083fed97.tar.gz
gcc-2a3e384f15e6f10fc62b27c6671d899b083fed97.tar.bz2
tm.texi (LOCAL_REGNO): Document.
* tm.texi (LOCAL_REGNO): Document. * flow.c (LOCAL_REGNO, EPILOGUE_USES): Provide default. (mark_regs_live_at_end): Don't mark LOCAL_REGNO registers. * reload1.c (reload): Likewise when considering nonlocal labels. * config/ia64/ia64.h (LOCAL_REGNO): New. * config/sparc/sparc.h (LOCAL_REGNO): New. From-SVN: r35564
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index d77d08e..fb7d2f5 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -85,6 +85,10 @@ Boston, MA 02111-1307, USA. */
#ifndef REGISTER_MOVE_COST
#define REGISTER_MOVE_COST(x, y) 2
#endif
+
+#ifndef LOCAL_REGNO
+#define LOCAL_REGNO(REGNO) 0
+#endif
/* During reload_as_needed, element N contains a REG rtx for the hard reg
into which reg N has been reloaded (perhaps for a previous insn). */
@@ -654,10 +658,8 @@ reload (first, global, dumpfile)
registers. */
if (current_function_has_nonlocal_label)
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
- {
- if (! call_used_regs[i] && ! fixed_regs[i])
- regs_ever_live[i] = 1;
- }
+ if (! call_used_regs[i] && ! fixed_regs[i] && ! LOCAL_REGNO (i))
+ regs_ever_live[i] = 1;
/* Find all the pseudo registers that didn't get hard regs
but do have known equivalent constants or memory slots.