Commit 29c246a7 by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

re PR bootstrap/15141 (MMIX breakage in…

re PR bootstrap/15141 (MMIX breakage in except.c:connect_post_landing_pads:handle insns after actual call insn)

	PR bootstrap/15141
	* except.c (connect_post_landing_pads): Delete insns after the
	barrier when generating a unwind_resume_libfunc call.

From-SVN: r81176
parent a978e17e
2004-04-26 Hans-Peter Nilsson <hp@bitrange.com>
PR bootstrap/15141
* except.c (connect_post_landing_pads): Delete insns after the
barrier when generating a unwind_resume_libfunc call.
2004-04-25 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
PR/c++ 15119
......
......@@ -1830,8 +1830,21 @@ connect_post_landing_pads (void)
e->count = src->count;
}
else
emit_library_call (unwind_resume_libfunc, LCT_THROW,
VOIDmode, 1, cfun->eh->exc_ptr, ptr_mode);
{
emit_library_call (unwind_resume_libfunc, LCT_THROW,
VOIDmode, 1, cfun->eh->exc_ptr, ptr_mode);
/* What we just emitted was a throwing libcall, so it got a
barrier automatically added after it. If the last insn in
the libcall sequence isn't the barrier, it's because the
target emits multiple insns for a call, and there are insns
after the actual call insn (which are redundant and would be
optimized away). The barrier is inserted exactly after the
call insn, so let's go get that and delete the insns after
it, because below we need the barrier to be the last insn in
the sequence. */
delete_insns_since (NEXT_INSN (last_call_insn ()));
}
seq = get_insns ();
end_sequence ();
......
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