diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2003-05-10 22:59:04 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2003-05-10 22:59:04 +0000 |
commit | 34dc173c2c848264901401da687c6edea165b7c9 (patch) | |
tree | 576cc3eb0bc73f866abed200b78ada8bb9e6cdc2 /gcc/config | |
parent | a64d0bc69ea6a927a0a16d71681b00099e285d1e (diff) | |
download | gcc-34dc173c2c848264901401da687c6edea165b7c9.zip gcc-34dc173c2c848264901401da687c6edea165b7c9.tar.gz gcc-34dc173c2c848264901401da687c6edea165b7c9.tar.bz2 |
except.c (EH_RETURN_STACKADJ_RTX): Do not define.
* except.c (EH_RETURN_STACKADJ_RTX): Do not define.
(EH_RETURN_HANDLER_RTX): Likewise.
(expand_builtin_eh_return): Do not copy stack adjustment
if EH_RETURN_STACKADJ_RTX is not defined.
(expand_eh_return): Likewise. Also, do not pass stack
adjustment as argument to the eh_return pattern.
* except.h (MUST_USE_SJLJ_EXCEPTIONS): Do not define just
because EH_RETURN_STACKADJ_RTX is not defined.
* unwind-dw.c (uw_update_context_1): If EH_RETURN_STACKADJ_RTX
is not defined, treat stack pointer like a regular register.
(uw_init_context_1): Set up fake initial stack pointer register.
(uw_install_context_1): Do not compute stack adjustment if
EH_RETURN_STACKADJ_RTX is not defined.
* config/i386/i386.md ("eh_return"): Remove first argument.
* config/mips/mips.md ("eh_return"): Likewise.
* config/rs6000/rs6000.md ("eh_return"): Likewise.
* config/sh/sh.md ("eh_return"): Likewise.
* config/s390/s390.h (EH_RETURN_STACKADJ_RTX): Remove.
From-SVN: r66672
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/i386.md | 5 | ||||
-rw-r--r-- | gcc/config/mips/mips.md | 12 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 10 | ||||
-rw-r--r-- | gcc/config/s390/s390.h | 1 | ||||
-rw-r--r-- | gcc/config/sh/sh.md | 6 |
5 files changed, 13 insertions, 21 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index e472f97..64d37f6 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -14284,11 +14284,10 @@ "ix86_expand_epilogue (0); DONE;") (define_expand "eh_return" - [(use (match_operand 0 "register_operand" "")) - (use (match_operand 1 "register_operand" ""))] + [(use (match_operand 0 "register_operand" ""))] "" { - rtx tmp, sa = operands[0], ra = operands[1]; + rtx tmp, sa = EH_RETURN_STACKADJ_RTX, ra = operands[0]; /* Tricky bit: we write the address of the handler to which we will be returning into someone else's stack frame, one word below the diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index 876f0db..718e039 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -9779,21 +9779,19 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2" ;; This is used in compiling the unwind routines. (define_expand "eh_return" - [(use (match_operand 0 "general_operand" "")) - (use (match_operand 1 "general_operand" ""))] + [(use (match_operand 0 "general_operand" ""))] "" " { enum machine_mode gpr_mode = TARGET_64BIT ? DImode : SImode; - if (GET_MODE (operands[1]) != gpr_mode) - operands[1] = convert_to_mode (gpr_mode, operands[1], 0); + if (GET_MODE (operands[0]) != gpr_mode) + operands[0] = convert_to_mode (gpr_mode, operands[0], 0); if (TARGET_64BIT) - emit_insn (gen_eh_set_lr_di (operands[1])); + emit_insn (gen_eh_set_lr_di (operands[0])); else - emit_insn (gen_eh_set_lr_si (operands[1])); + emit_insn (gen_eh_set_lr_si (operands[0])); - emit_move_insn (EH_RETURN_STACKADJ_RTX, operands[0]); DONE; }") diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 37b88d3..a40dc2b 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -14392,19 +14392,17 @@ ; This is used in compiling the unwind routines. (define_expand "eh_return" - [(use (match_operand 0 "general_operand" "")) - (use (match_operand 1 "general_operand" ""))] + [(use (match_operand 0 "general_operand" ""))] "" " { #if TARGET_AIX - rs6000_emit_eh_toc_restore (operands[0]); + rs6000_emit_eh_toc_restore (EH_RETURN_STACKADJ_RTX); #endif if (TARGET_32BIT) - emit_insn (gen_eh_set_lr_si (operands[1])); + emit_insn (gen_eh_set_lr_si (operands[0])); else - emit_insn (gen_eh_set_lr_di (operands[1])); - emit_move_insn (EH_RETURN_STACKADJ_RTX, operands[0]); + emit_insn (gen_eh_set_lr_di (operands[0])); DONE; }") diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h index 5bd0ab4..824a6e2 100644 --- a/gcc/config/s390/s390.h +++ b/gcc/config/s390/s390.h @@ -550,7 +550,6 @@ extern int current_function_outgoing_args_size; /* Describe how we implement __builtin_eh_return. */ #define EH_RETURN_DATA_REGNO(N) ((N) < 4 ? (N) + 6 : INVALID_REGNUM) -#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, 10) #define EH_RETURN_HANDLER_RTX \ gen_rtx_MEM (Pmode, plus_constant (arg_pointer_rtx, \ TARGET_64BIT? -48 : -40)) diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index f440eec..eb63538 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -7311,18 +7311,16 @@ mov.l\\t1f,r0\\n\\ }") (define_expand "eh_return" - [(use (match_operand 0 "register_operand" "")) - (use (match_operand 1 "register_operand" ""))] + [(use (match_operand 0 "register_operand" ""))] "" { - rtx tmp, sa = operands[0], ra = operands[1]; + rtx tmp, ra = operands[0]; if (TARGET_SHMEDIA64) emit_insn (gen_eh_set_ra_di (ra)); else emit_insn (gen_eh_set_ra_si (ra)); - emit_move_insn (EH_RETURN_STACKADJ_RTX, sa); DONE; }) |