]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c/10175 (-Wunreachable-code doesn't work for single lines)
authorJason Merrill <jason@gcc.gnu.org>
Fri, 4 Apr 2003 01:22:47 +0000 (20:22 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 4 Apr 2003 01:22:47 +0000 (20:22 -0500)
        PR c/10175
        * jump.c (never_reached_warning): Look backwards for a line note.

From-SVN: r65228

gcc/ChangeLog
gcc/jump.c

index d0a6e3adce543688897dc2ac83a78b95f3cd66a6..da14be4210457c535a3773265b0dadd7cf068985 100644 (file)
@@ -1,7 +1,12 @@
+2003-04-03  Jason Merrill  <jason@redhat.com>
+
+       PR c/10175
+       * jump.c (never_reached_warning): Look backwards for a line note.
+
 2003-04-02  Richard Henderson  <rth@redhat.com>
 
-        * dwarf2out.c (output_call_frame_info): Ignore fde->nothrow as an
-        optimization when flag_exceptions not enabled.
+       * dwarf2out.c (output_call_frame_info): Ignore fde->nothrow as an
+       optimization when flag_exceptions not enabled.
 
 2003-03-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
index 92806fcaa4bf4a0b5f5bbfa6077a080dc37606f7..9d272e8bc5cddfbe8f4cdcbea85667f39221d6b0 100644 (file)
@@ -1954,10 +1954,20 @@ never_reached_warning (avoided_insn, finish)
   if (!warn_notreached)
     return;
 
+  /* 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)
+      {
+       insn = NEXT_INSN (insn);
+       break;
+      }
+
   /* 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))
+  for (; insn != NULL; insn = NEXT_INSN (insn))
     {
       if ((finish == NULL && GET_CODE (insn) == CODE_LABEL)
          || GET_CODE (insn) == BARRIER)