jump.c (jump_optimize): Initialize mappings from INSN_UID to EH region if...

* jump.c (jump_optimize): Initialize mappings from INSN_UID to
        EH region if exceptions are enabled and we're performing cross
        jump optimizations.
        (find_cross_jump): Exit loop if the insns are in different EH regions.

From-SVN: r23475
This commit is contained in:
Jeffrey A Law 1998-10-31 11:32:02 +00:00 committed by Jeff Law
parent 21af493bcd
commit 18f3f864d3
2 changed files with 20 additions and 0 deletions

View File

@ -1,3 +1,10 @@
Sat Oct 31 12:30:02 1998 Jeffrey A Law (law@cygnus.com)
* jump.c (jump_optimize): Initialize mappings from INSN_UID to
EH region if exceptions are enabled and we're performing cross
jump optimizations.
(find_cross_jump): Exit loop if the insns are in different EH regions.
Sat Oct 31 10:02:48 1998 Mark Mitchell <mark@markmitchell.com>
* dwarf2out.c (output_call_frame_info): Use

View File

@ -182,6 +182,12 @@ jump_optimize (f, cross_jump, noop_moves, after_regscan)
max_uid++;
/* If we are performing cross jump optimizations, then initialize
tables mapping UIDs to EH regions to avoid incorrect movement
of insns from one EH region to another. */
if (flag_exceptions && cross_jump)
init_insn_eh_region (f, max_uid);
/* Delete insns following barriers, up to next label. */
for (insn = f; insn;)
@ -2715,6 +2721,13 @@ find_cross_jump (e1, e2, minimum, f1, f2)
if (i2 == 0 || GET_CODE (i1) != GET_CODE (i2))
break;
/* Avoid moving insns across EH regions if either of the insns
can throw. */
if (flag_exceptions
&& (asynchronous_exceptions || GET_CODE (i1) == CALL_INSN)
&& !in_same_eh_region (i1, i2))
break;
p1 = PATTERN (i1);
p2 = PATTERN (i2);