* config/i960/i960.h (FRAME_POINTER_REQUIRED): Revert removal of
check for current_function_has_nonlocal_goto from 1999-11-12.
From-SVN: r40018
+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.
/* ??? 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.