This fixes a bogus warning in bitmap.c by avoiding the problematic
transform of cunrolli, thereby eliding the elt->bits[0] test for
--disable-checking.

Bootstrapped (with and without --disable-checking) and tested on
x86_64-unknown-linux-gnu, applied.

Richard.

2018-11-21  Richard Biener  <rguent...@suse.de>

        PR bootstrap/88133
        * bitmap.c (bitmap_last_set_bit): Refactor to avoid warning.

        * Makefile.in (bitmap.o-warn): Remove again.

Index: gcc/bitmap.c
===================================================================
--- gcc/bitmap.c        (revision 266340)
+++ gcc/bitmap.c        (working copy)
@@ -1186,13 +1186,13 @@ bitmap_last_set_bit (const_bitmap a)
     elt = elt->next;
 
   bit_no = elt->indx * BITMAP_ELEMENT_ALL_BITS;
-  for (ix = BITMAP_ELEMENT_WORDS - 1; ix >= 0; ix--)
+  for (ix = BITMAP_ELEMENT_WORDS - 1; ix >= 1; ix--)
     {
       word = elt->bits[ix];
       if (word)
        goto found_bit;
     }
-  gcc_unreachable ();
+  gcc_assert (elt->bits[ix] != 0);
  found_bit:
   bit_no += ix * BITMAP_WORD_BITS;
 #if GCC_VERSION >= 3004
Index: gcc/Makefile.in
===================================================================
--- gcc/Makefile.in     (revision 266340)
+++ gcc/Makefile.in     (working copy)
@@ -221,7 +221,6 @@ libgcov-merge-tool.o-warn = -Wno-error
 gimple-match.o-warn = -Wno-unused
 generic-match.o-warn = -Wno-unused
 dfp.o-warn = -Wno-strict-aliasing
-bitmap.o-warn = -Wno-error=array-bounds # PR 87926
 
 # All warnings have to be shut off in stage1 if the compiler used then
 # isn't gcc; configure determines that.  WARN_CFLAGS will be either

Reply via email to