aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-02-23 08:46:04 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1996-02-23 08:46:04 -0500
commit0dddb42d9003167d9485ef1079f0ecc8d37e34a5 (patch)
treea214199a0a32a6d8076a1fa57e371648772a35a3 /gcc
parent6cab873196ddb5b6b5c026f5eed50f12e87b6265 (diff)
downloadgcc-0dddb42d9003167d9485ef1079f0ecc8d37e34a5.zip
gcc-0dddb42d9003167d9485ef1079f0ecc8d37e34a5.tar.gz
gcc-0dddb42d9003167d9485ef1079f0ecc8d37e34a5.tar.bz2
(expand_builtin...
(expand_builtin, case BUILT_IN_SETJMP): Set CONST_CALL_P on NOTE_INSN_SETJMP instead of emitting USE insns for call-saved regs. From-SVN: r11340
Diffstat (limited to 'gcc')
-rw-r--r--gcc/expr.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 41fc899..34209b7 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -8522,7 +8522,7 @@ expand_builtin (exp, target, subtarget, mode, ignore)
emit_queue ();
- emit_note (NULL_PTR, NOTE_INSN_SETJMP);
+ CONST_CALL_P (emit_note (NULL_PTR, NOTE_INSN_SETJMP)) = 1;
current_function_calls_setjmp = 1;
/* We store the frame pointer and the address of lab1 in the buffer
@@ -8553,16 +8553,9 @@ expand_builtin (exp, target, subtarget, mode, ignore)
emit_label (lab1);
/* Note that setjmp clobbers FP when we get here, so we have to
- make sure it's marked as used by this function. Also,
- some inner function might use a call-saved register, so we
- have to set up to save all of them here. */
+ make sure it's marked as used by this function. */
emit_insn (gen_rtx (USE, VOIDmode, hard_frame_pointer_rtx));
- for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
- if (! call_used_regs[i])
- emit_insn (gen_rtx (USE, VOIDmode,
- gen_rtx (REG, reg_raw_mode[i], i)));
-
/* Now put in the code to restore the frame pointer, and argument
pointer, if needed. The code below is from expand_end_bindings
in stmt.c; see detailed documentation there. */