Fix i960 sjlj EH
Mike Stump
mrs@windriver.com
Fri May 4 16:59:00 GMT 2001
Current status, i960 EH is totally broken, with the below patch, it
works better. g++.mike/eh6.C is the testcase fixed.
SPARC is (or was) also broken, I'll be looking at it next. I suspect the
same type of problem.
Can it go in?
2001-05-04 Mike Stump <mrs@wrs.com>
* i960.md (nonlocal_goto): Fix totally broken sjlj EH.
Doing diffs in i960.md.~1~:
*** i960.md.~1~ Thu Apr 5 11:28:00 2001
--- i960.md Fri May 4 16:49:49 2001
***************
*** 2352,2358 ****
"
{
rtx chain = operands[0];
! rtx handler = operands[1];
rtx stack = operands[2];
rtx label = operands[3];
--- 2352,2358 ----
"
{
rtx chain = operands[0];
! rtx fp = operands[1];
rtx stack = operands[2];
rtx label = operands[3];
***************
*** 2369,2375 ****
/* Load the static chain value for the containing fn into fp. This is needed
because STACK refers to fp. */
! emit_move_insn (hard_frame_pointer_rtx, chain);
/* Now move the adjusted value into the pfp register for the following return
instruction. */
--- 2369,2376 ----
/* Load the static chain value for the containing fn into fp. This is needed
because STACK refers to fp. */
! emit_move_insn (hard_frame_pointer_rtx,
! copy_to_reg (plus_constant (fp, 64)));
/* Now move the adjusted value into the pfp register for the following return
instruction. */
***************
*** 2382,2388 ****
emit_move_insn (gen_rtx (MEM, SImode,
plus_constant (hard_frame_pointer_rtx, -56)),
! handler);
/* Next, we put stack into the saved $sp value in the frame. */
emit_move_insn (gen_rtx (MEM, SImode,
--- 2383,2389 ----
emit_move_insn (gen_rtx (MEM, SImode,
plus_constant (hard_frame_pointer_rtx, -56)),
! label);
/* Next, we put stack into the saved $sp value in the frame. */
emit_move_insn (gen_rtx (MEM, SImode,
--------------
More information about the Gcc-patches
mailing list