jump.c (jump_optimize_1): Only set CAN_REACH_END if calculate_can_reach_end returns nonzero.

* jump.c (jump_optimize_1): Only set CAN_REACH_END if
        calculate_can_reach_end returns nonzero.

From-SVN: r27281
This commit is contained in:
Jeffrey A Law 1999-05-31 13:34:55 +00:00 committed by Jeff Law
parent 2f0a2a5b4a
commit efa90f05af
2 changed files with 15 additions and 2 deletions

View File

@ -18,6 +18,9 @@ Mon May 31 11:40:20 EDT 1999 John Wehle (john@feith.com)
Mon May 31 00:46:17 1999 Jeffrey A Law (law@cygnus.com)
* jump.c (jump_optimize_1): Only set CAN_REACH_END if
calculate_can_reach_end returns nonzero.
* configure.in (native gas tests): Search for an assembler in the
same manner that the installed compiler will.
* configure: Rebuilt.

View File

@ -235,7 +235,12 @@ jump_optimize_1 (f, cross_jump, noop_moves, after_regscan, mark_labels_only)
if (!optimize)
{
can_reach_end = calculate_can_reach_end (last_insn, 1, 0);
/* CAN_REACH_END is persistent for each function. Once set it should
not be cleared. This is especially true for the case where we
delete the NOTE_FUNCTION_END note. CAN_REACH_END is cleared by
the front-end before compiling each function. */
if (calculate_can_reach_end (last_insn, 1, 0))
can_reach_end = 1;
/* Zero the "deleted" flag of all the "deleted" insns. */
for (insn = f; insn; insn = NEXT_INSN (insn))
@ -2068,7 +2073,12 @@ jump_optimize_1 (f, cross_jump, noop_moves, after_regscan, mark_labels_only)
}
#endif
can_reach_end = calculate_can_reach_end (last_insn, 0, 1);
/* CAN_REACH_END is persistent for each function. Once set it should
not be cleared. This is especially true for the case where we
delete the NOTE_FUNCTION_END note. CAN_REACH_END is cleared by
the front-end before compiling each function. */
if (calculate_can_reach_end (last_insn, 0, 1))
can_reach_end = 1;
/* Show JUMP_CHAIN no longer valid. */
jump_chain = 0;