summaryrefslogtreecommitdiffstats
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i960/i960.h7
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 43ce072896d..7bb6f8c1536 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-02-21 DJ Delorie <dj@redhat.com>
+
+ * config/i960/i960.h (FRAME_POINTER_REQUIRED): Revert removal of
+ check for current_function_has_nonlocal_goto from 1999-11-12.
+
Fri Feb 23 15:28:39 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* diagnostic.c (trim_filename): No longer static.
diff --git a/gcc/config/i960/i960.h b/gcc/config/i960/i960.h
index 510793b307f..4c85e95d8e8 100644
--- a/gcc/config/i960/i960.h
+++ b/gcc/config/i960/i960.h
@@ -617,7 +617,12 @@ extern int target_flags;
/* ??? It isn't clear to me why this is here. Perhaps because of a bug (since
fixed) in the definition of INITIAL_FRAME_POINTER_OFFSET which would have
caused this to fail. */
-#define FRAME_POINTER_REQUIRED (! leaf_function_p ())
+/* ??? Must check current_function_has_nonlocal_goto, otherwise frame pointer
+ elimination messes up nonlocal goto sequences. I think this works for other
+ targets because they use indirect jumps for the return which disables fp
+ elimination. */
+#define FRAME_POINTER_REQUIRED \
+ (! leaf_function_p () || current_function_has_nonlocal_goto)
/* Definitions for register eliminations.
OpenPOWER on IntegriCloud