Commit b6553814 by Steven Bosscher Committed by Andreas Jaeger

re PR c/8828 (gcc reports some code is unreachable when it is not)

2003-02-22  Steven Bosscher  <s.bosscher@student.tudelft.nl>

	PR c/8828
	* jump.c (never_reached_warning): Don't fall through BARRRIER
	insns.  Update comments to reflect what the function really does.

From-SVN: r63275
parent 26182e15
......@@ -4,8 +4,8 @@
* toplev.c (process_options): If flag_detailed_statistics is set,
then set time_report as well.
PR c/8828
* jump.c (never_reached_warning): Don't fall through BARRRIER
PR c/8828
* jump.c (never_reached_warning): Don't fall through BARRRIER
insns. Update comments to reflect what the function really does.
2003-02-21 Roger Sayle <roger@eyesopen.com>
......
......@@ -1706,9 +1706,9 @@ delete_computation (insn)
}
/* Delete insn INSN from the chain of insns and update label ref counts
and delete insns now unreachable.
and delete insns now unreachable.
Returns the first insn after INSN that was not deleted.
Returns the first insn after INSN that was not deleted.
Usage of this instruction is deprecated. Use delete_insn instead and
subsequent cfg_cleanup pass to delete unreachable code if needed. */
......@@ -1893,14 +1893,14 @@ delete_for_peephole (from, to)
is also an unconditional jump in that case. */
}
/* We have determined that INSN is never reached, and are about to
delete it. Print a warning if the user asked for one.
/* We have determined that AVOIDED_INSN is never reached, and are
about to delete it. If the insn chain between AVOIDED_INSN and
FINISH contains more than one line from the current function, and
contains at least one operation, print a warning if the user asked
for it. If FINISH is NULL, look between AVOIDED_INSN and a LABEL.
To try to make this warning more useful, this should only be called
once per basic block not reached, and it only warns when the basic
block contains more than one line from the current function, and
contains at least one operation. CSE and inlining can duplicate insns,
so it's possible to get spurious warnings from this. */
CSE and inlining can duplicate insns, so it's possible to get
spurious warnings from this. */
void
never_reached_warning (avoided_insn, finish)
......@@ -1910,15 +1910,16 @@ never_reached_warning (avoided_insn, finish)
rtx a_line_note = NULL;
int two_avoided_lines = 0, contains_insn = 0, reached_end = 0;
if (! warn_notreached)
if (!warn_notreached)
return;
/* Scan forwards, looking at LINE_NUMBER notes, until
we hit a LABEL or we run out of insns. */
/* Scan forwards, looking at LINE_NUMBER notes, until we hit a LABEL
in case FINISH is NULL, otherwise until we run out of insns. */
for (insn = avoided_insn; insn != NULL; insn = NEXT_INSN (insn))
{
if (finish == NULL && GET_CODE (insn) == CODE_LABEL)
if ((finish == NULL && GET_CODE (insn) == CODE_LABEL)
|| GET_CODE (insn) == BARRIER)
break;
if (GET_CODE (insn) == NOTE /* A line number note? */
......
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