aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i960
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2001-02-23 18:05:33 -0500
committerDJ Delorie <dj@gcc.gnu.org>2001-02-23 18:05:33 -0500
commit4f0a3098c58f0f9740d3c6f9deb348d04f042575 (patch)
treeb46e91340c6a24eceec2fa21ca053db73308a475 /gcc/config/i960
parentfce687f8769fbad7fba74cf9adb985dd5369df01 (diff)
downloadgcc-4f0a3098c58f0f9740d3c6f9deb348d04f042575.zip
gcc-4f0a3098c58f0f9740d3c6f9deb348d04f042575.tar.gz
gcc-4f0a3098c58f0f9740d3c6f9deb348d04f042575.tar.bz2
i960.h (FRAME_POINTER_REQUIRED): Revert removal of check for current_function_has_nonlocal_goto from 1999-11-12.
* config/i960/i960.h (FRAME_POINTER_REQUIRED): Revert removal of check for current_function_has_nonlocal_goto from 1999-11-12. From-SVN: r40018
Diffstat (limited to 'gcc/config/i960')
-rw-r--r--gcc/config/i960/i960.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/config/i960/i960.h b/gcc/config/i960/i960.h
index 510793b..4c85e95 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.