aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2002-03-19 19:33:42 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2002-03-19 14:33:42 -0500
commit91d4b3fd9a4b06ebd6ae324713f8c05bce15a43e (patch)
treea9ed7b7ceba387bd275ac6cde64d0a054b3e52b6 /gcc
parent2496c7bd5f519bc9334f2a4ad771b4b8c9cba7c7 (diff)
downloadgcc-91d4b3fd9a4b06ebd6ae324713f8c05bce15a43e.zip
gcc-91d4b3fd9a4b06ebd6ae324713f8c05bce15a43e.tar.gz
gcc-91d4b3fd9a4b06ebd6ae324713f8c05bce15a43e.tar.bz2
sparc.h (CAN_ELMINIATE): Can only eliminate FP in favor of SP if FRAME_POINTER_REQUIRED is false.
* config/sparc/sparc.h (CAN_ELMINIATE): Can only eliminate FP in favor of SP if FRAME_POINTER_REQUIRED is false. From-SVN: r51032
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sparc/sparc.h7
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fbaee55..58f6ea9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Tue Mar 19 14:12:32 2002 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * config/sparc/sparc.h (CAN_ELMINIATE): Can only eliminate FP
+ in favor of SP if FRAME_POINTER_REQUIRED is false.
+
2002-03-19 Lars Brinkhoff <lars@nocrew.org>
* emit-rtl.c (gen_int_mode): New function.
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index e765973..89f5e07 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -1570,7 +1570,12 @@ extern const char leaf_reg_remap[];
{{ FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
{ FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM} }
-#define CAN_ELIMINATE(FROM, TO) 1
+/* The way this is structured, we can't eliminate SFP in favor of SP
+ if the frame pointer is required: we want to use the SFP->HFP elimination
+ in that case. But the test in update_eliminables doesn't know we are
+ assuming below that we only do the former elimination. */
+#define CAN_ELIMINATE(FROM, TO) \
+ ((TO) == HARD_FRAME_POINTER_REGNUM || !FRAME_POINTER_REQUIRED)
#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
do { \