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