aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2003-04-29 16:25:11 -0400
committerJason Merrill <jason@gcc.gnu.org>2003-04-29 16:25:11 -0400
commit72e940d286a2ffee8fafa04431da540d9646622e (patch)
tree72cefeccbafcc29fe61400e39d0ce726e6b585bb /gcc
parent60cde93696c3a8c25f85606b31645fb9c17af56b (diff)
downloadgcc-72e940d286a2ffee8fafa04431da540d9646622e.zip
gcc-72e940d286a2ffee8fafa04431da540d9646622e.tar.gz
gcc-72e940d286a2ffee8fafa04431da540d9646622e.tar.bz2
re PR middle-end/10336 (ICE with -Wunreachable-code)
PR middle-end/10336 * jump.c (never_reached_warning): Really stop looking if we reach the beginning of the function. From-SVN: r66249
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/jump.c14
2 files changed, 14 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c22b671..b7bb449 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2003-04-29 Jason Merrill <jason@redhat.com>
+
+ PR middle-end/10336
+ * jump.c (never_reached_warning): Really stop looking if we reach
+ the beginning of the function.
+
2003-04-29 Bob Wilson <bob.wilson@acm.org>
* config/xtensa/elf.h (SIZE_TYPE, PTRDIFF_TYPE, USER_LABEL_PREFIX):
diff --git a/gcc/jump.c b/gcc/jump.c
index 5563ee3..5bed408 100644
--- a/gcc/jump.c
+++ b/gcc/jump.c
@@ -1912,13 +1912,15 @@ never_reached_warning (avoided_insn, finish)
/* Back up to the first of any NOTEs preceding avoided_insn; flow passes
us the head of a block, a NOTE_INSN_BASIC_BLOCK, which often follows
the line note. */
- for (insn = PREV_INSN (avoided_insn); ; insn = PREV_INSN (insn))
- if (GET_CODE (insn) != NOTE
- || NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_BEG)
- {
- insn = NEXT_INSN (insn);
+ insn = avoided_insn;
+ while (1)
+ {
+ rtx prev = PREV_INSN (insn);
+ if (prev == NULL_RTX
+ || GET_CODE (prev) != NOTE)
break;
- }
+ insn = prev;
+ }
/* Scan forwards, looking at LINE_NUMBER notes, until we hit a LABEL
in case FINISH is NULL, otherwise until we run out of insns. */