final.c (final_scan_insn): Apply the effects of frame-related delay slot insns before emitting a delayed...

* final.c (final_scan_insn): Apply the effects of frame-related
	delay slot insns before emitting a delayed branch.

From-SVN: r66774
This commit is contained in:
Richard Sandiford 2003-05-13 18:51:57 +00:00 committed by Richard Sandiford
parent c1f1978f30
commit d660cefe65
2 changed files with 21 additions and 7 deletions

View File

@ -1,3 +1,8 @@
2003-05-13 Richard Sandiford <rsandifo@redhat.com>
* final.c (final_scan_insn): Apply the effects of frame-related
delay slot insns before emitting a delayed branch.
2003-05-13 Nick Clifton <nickc@redhat.com>
* config/mcore/mcore.md (jump): Use emit_jump_insn.

View File

@ -2160,6 +2160,14 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
break;
final_sequence = body;
/* Record the delay slots' frame information before the branch.
This is needed for delayed calls: see execute_cfa_program(). */
#if defined (DWARF2_UNWIND_INFO)
if (dwarf2out_do_frame ())
for (i = 1; i < XVECLEN (body, 0); i++)
dwarf2out_frame_debug (XVECEXP (body, 0, i));
#endif
/* The first insn in this SEQUENCE might be a JUMP_INSN that will
force the restoration of a comparison that was previously
thought unnecessary. If that happens, cancel this sequence
@ -2514,17 +2522,18 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
output_asm_insn (template, recog_data.operand);
/* If necessary, report the effect that the instruction has on
the unwind info. We've already done this for delay slots
and call instructions. */
#if defined (DWARF2_UNWIND_INFO)
#if defined (HAVE_prologue)
if (GET_CODE (insn) == INSN && dwarf2out_do_frame ())
dwarf2out_frame_debug (insn);
#else
if (!ACCUMULATE_OUTGOING_ARGS
&& GET_CODE (insn) == INSN
if (GET_CODE (insn) == INSN
#if !defined (HAVE_prologue)
&& !ACCUMULATE_OUTGOING_ARGS
#endif
&& final_sequence == 0
&& dwarf2out_do_frame ())
dwarf2out_frame_debug (insn);
#endif
#endif
#if 0
/* It's not at all clear why we did this and doing so interferes