diff options
author | DJ Delorie <dj@redhat.com> | 2001-02-23 18:05:33 -0500 |
---|---|---|
committer | DJ Delorie <dj@gcc.gnu.org> | 2001-02-23 18:05:33 -0500 |
commit | 4f0a3098c58f0f9740d3c6f9deb348d04f042575 (patch) | |
tree | b46e91340c6a24eceec2fa21ca053db73308a475 /gcc/config/i960 | |
parent | fce687f8769fbad7fba74cf9adb985dd5369df01 (diff) | |
download | gcc-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.h | 7 |
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. |