From e10c79fe9ab14e64078bfdeb7f4348a9cd4476c1 Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Thu, 8 Aug 2002 17:17:09 +0000 Subject: [PATCH] emit-rtl.c (gen_rtx_REG): After reload... * emit-rtl.c (gen_rtx_REG): After reload, only return frame_pointer_rtx or hard_frame_pointer_rtx if frame_pointer_needed. Co-Authored-By: Richard Henderson From-SVN: r56133 --- gcc/ChangeLog | 6 ++++++ gcc/emit-rtl.c | 12 +++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f79f8b132d39..3c578c278b29 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-08-08 Lars Brinkhoff + Richard Henderson + + * emit-rtl.c (gen_rtx_REG): After reload, only return + frame_pointer_rtx or hard_frame_pointer_rtx if frame_pointer_needed. + 2002-08-08 Jakub Jelinek * config/rs6000/rs6000-protos.h (rs6000_field_alignment): Remove. diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 26032c16d356..d8689243e98d 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -514,10 +514,12 @@ gen_rtx_REG (mode, regno) if (mode == Pmode && !reload_in_progress) { - if (regno == FRAME_POINTER_REGNUM) + if (regno == FRAME_POINTER_REGNUM + && (!reload_completed || frame_pointer_needed)) return frame_pointer_rtx; #if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM - if (regno == HARD_FRAME_POINTER_REGNUM) + if (regno == HARD_FRAME_POINTER_REGNUM + && (!reload_completed || frame_pointer_needed)) return hard_frame_pointer_rtx; #endif #if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM && HARD_FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM @@ -542,7 +544,11 @@ gen_rtx_REG (mode, regno) This code is disabled for now until we can fix the various backends which depend on having non-shared hard registers in some cases. Long term we want to re-enable this code as it can significantly cut down - on the amount of useless RTL that gets generated. */ + on the amount of useless RTL that gets generated. + + We'll also need to fix some code that runs after reload that wants to + set ORIGINAL_REGNO. */ + if (cfun && cfun->emit && regno_reg_rtx -- 2.47.3