Commit 94bd63e5 by Andrew Haley Committed by Andrew Haley

reload1.c (copy_eh_notes): New function.

2001-05-03  Andrew Haley  <aph@cambridge.redhat.com>

        * reload1.c (copy_eh_notes): New function.
        (emit_input_reload_insns): Call it.
        (emit_output_reload_insns): Call it.

From-SVN: r41918
parent 352b3f3f
2001-05-03 Andrew Haley <aph@cambridge.redhat.com>
* reload1.c (copy_eh_notes): New function.
(emit_input_reload_insns): Call it.
(emit_output_reload_insns): Call it.
2001-05-07 Zack Weinberg <zackw@stanford.edu> 2001-05-07 Zack Weinberg <zackw@stanford.edu>
* config.gcc (i[34567]86-*-sco3.2v4*, i[34567]86-*-sco*): * config.gcc (i[34567]86-*-sco3.2v4*, i[34567]86-*-sco*):
......
...@@ -454,6 +454,7 @@ static void move2add_note_store PARAMS ((rtx, rtx, void *)); ...@@ -454,6 +454,7 @@ static void move2add_note_store PARAMS ((rtx, rtx, void *));
#ifdef AUTO_INC_DEC #ifdef AUTO_INC_DEC
static void add_auto_inc_notes PARAMS ((rtx, rtx)); static void add_auto_inc_notes PARAMS ((rtx, rtx));
#endif #endif
static void copy_eh_notes PARAMS ((rtx, rtx));
static HOST_WIDE_INT sext_for_mode PARAMS ((enum machine_mode, static HOST_WIDE_INT sext_for_mode PARAMS ((enum machine_mode,
HOST_WIDE_INT)); HOST_WIDE_INT));
static void failed_reload PARAMS ((rtx, int)); static void failed_reload PARAMS ((rtx, int));
...@@ -6571,10 +6572,13 @@ emit_input_reload_insns (chain, rl, old, j) ...@@ -6571,10 +6572,13 @@ emit_input_reload_insns (chain, rl, old, j)
rl->when_needed); rl->when_needed);
} }
if (flag_non_call_exceptions)
copy_eh_notes (insn, get_insns ());
/* End this sequence. */ /* End this sequence. */
*where = get_insns (); *where = get_insns ();
end_sequence (); end_sequence ();
/* Update reload_override_in so that delete_address_reloads_1 /* Update reload_override_in so that delete_address_reloads_1
can see the actual register usage. */ can see the actual register usage. */
if (oldequiv_reg) if (oldequiv_reg)
...@@ -6789,6 +6793,9 @@ emit_output_reload_insns (chain, rl, j) ...@@ -6789,6 +6793,9 @@ emit_output_reload_insns (chain, rl, j)
else else
output_reload_insns[rl->opnum] = get_insns (); output_reload_insns[rl->opnum] = get_insns ();
if (flag_non_call_exceptions)
copy_eh_notes (insn, get_insns ());
end_sequence (); end_sequence ();
} }
...@@ -9437,3 +9444,23 @@ add_auto_inc_notes (insn, x) ...@@ -9437,3 +9444,23 @@ add_auto_inc_notes (insn, x)
} }
} }
#endif #endif
/* Copy EH notes from an insn to its reloads. */
static void
copy_eh_notes (insn, x)
rtx insn;
rtx x;
{
rtx eh_note = find_reg_note (insn, REG_EH_REGION, NULL_RTX);
if (eh_note)
{
for (; x != 0; x = NEXT_INSN (x))
{
if (may_trap_p (PATTERN (x)))
REG_NOTES (x)
= gen_rtx_EXPR_LIST (REG_EH_REGION, XEXP (eh_note, 0),
REG_NOTES (x));
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment