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:
parent
21af493bcd
commit
18f3f864d3
|
@ -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>
|
Sat Oct 31 10:02:48 1998 Mark Mitchell <mark@markmitchell.com>
|
||||||
|
|
||||||
* dwarf2out.c (output_call_frame_info): Use
|
* dwarf2out.c (output_call_frame_info): Use
|
||||||
|
|
13
gcc/jump.c
13
gcc/jump.c
|
@ -182,6 +182,12 @@ jump_optimize (f, cross_jump, noop_moves, after_regscan)
|
||||||
|
|
||||||
max_uid++;
|
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. */
|
/* Delete insns following barriers, up to next label. */
|
||||||
|
|
||||||
for (insn = f; insn;)
|
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))
|
if (i2 == 0 || GET_CODE (i1) != GET_CODE (i2))
|
||||||
break;
|
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);
|
p1 = PATTERN (i1);
|
||||||
p2 = PATTERN (i2);
|
p2 = PATTERN (i2);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue