diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2001-05-22 20:04:58 +0000 |
---|---|---|
committer | Andrew Macleod <amacleod@gcc.gnu.org> | 2001-05-22 20:04:58 +0000 |
commit | 8206fc899cf6beab98d32015352a36ee631e4269 (patch) | |
tree | 5fec888856d3a7d12e30354c553560ca9fe0423b /gcc/builtins.c | |
parent | 0401d4997a27f495b52e2a5af5f172fc10cf9a1b (diff) | |
download | gcc-8206fc899cf6beab98d32015352a36ee631e4269.tar.gz |
builtins.c (expand_builtin_longjmp): A longjmp can be a call too.
2001-05-22 Andrew MacLeod <amacleod@redhat.com>
* builtins.c (expand_builtin_longjmp): A longjmp can be a call too.
* config/ia64/ia64.md (nonlocal_goto): Reverse label and frame pointer
parameters to __ia64_nonlocal_goto. Flag as NO_RETURN.
* config/ia64/ia64.c (ia64_expand_epilogue): Make sure we are issuing
"r2" to the assembly file. Only issue allocs with non-zero parameters.
From-SVN: r42467
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r-- | gcc/builtins.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index eecf1c5a860..7b4cd7593c9 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -718,12 +718,17 @@ expand_builtin_longjmp (buf_addr, value) __builtin_setjmp target in the same function. However, we've already cautioned the user that these functions are for internal exception handling use only. */ - for (insn = get_last_insn (); - GET_CODE (insn) != JUMP_INSN; - insn = PREV_INSN (insn)) - continue; - REG_NOTES (insn) = alloc_EXPR_LIST (REG_NON_LOCAL_GOTO, const0_rtx, - REG_NOTES (insn)); + for (insn = get_last_insn (); insn; insn = PREV_INSN (insn)) + { + if (GET_CODE (insn) == JUMP_INSN) + { + REG_NOTES (insn) = alloc_EXPR_LIST (REG_NON_LOCAL_GOTO, const0_rtx, + REG_NOTES (insn)); + break; + } + else if (GET_CODE (insn) == CALL_INSN) + break; + } } /* Get a MEM rtx for expression EXP which is the address of an operand |