Patchwork Asserts in bitmap.c

login
register
mail settings
Submitter Jan Hubicka
Date June 9, 2010, 6:56 p.m.
Message ID <20100609185612.GA1735@kam.mff.cuni.cz>
Download mbox | patch
Permalink /patch/55118/
State New
Headers show

Comments

Jan Hubicka - June 9, 2010, 6:56 p.m.
Hi,
bitmap.c constains quite few asserts, some in internal loops that checks
consistency of the datastructure itself.  I turned into checking assert
all of them that are not guarding operation on the whole bitmap.
(i.e. keeping asserts checking that bitmap_and is not used with destination
being same as sources and some more global checks).
I think the second might go away too, but they are not important.
In fact only ones I care about are those in bitmap_elt* functions
that are tripped over every time we handle new bitmap page.

Bootstrapped/regtested x86_64-linux, OK?

Honza

	* bitmap.c (bitmap_elt_insert_after, bitmap_first_set_bit,
	bitmap_first_set_bit, bitmap_last_set_bit, bitmap_last_set_bit,
	bitmap_and_into, bitmap_and_compl_into, bitmap_set_range,
	bitmap_compl_and_into, bitmap_elt_ior): Use checking asserts;
	merge multiple asserts into single.
Richard Guenther - June 9, 2010, 10:31 p.m.
On Wed, Jun 9, 2010 at 8:56 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
> Hi,
> bitmap.c constains quite few asserts, some in internal loops that checks
> consistency of the datastructure itself.  I turned into checking assert
> all of them that are not guarding operation on the whole bitmap.
> (i.e. keeping asserts checking that bitmap_and is not used with destination
> being same as sources and some more global checks).
> I think the second might go away too, but they are not important.
> In fact only ones I care about are those in bitmap_elt* functions
> that are tripped over every time we handle new bitmap page.
>
> Bootstrapped/regtested x86_64-linux, OK?

Ok.

Thanks,
Richard.

> Honza
>
>        * bitmap.c (bitmap_elt_insert_after, bitmap_first_set_bit,
>        bitmap_first_set_bit, bitmap_last_set_bit, bitmap_last_set_bit,
>        bitmap_and_into, bitmap_and_compl_into, bitmap_set_range,
>        bitmap_compl_and_into, bitmap_elt_ior): Use checking asserts;
>        merge multiple asserts into single.
> Index: bitmap.c
> ===================================================================
> --- bitmap.c    (revision 160502)
> +++ bitmap.c    (working copy)
> @@ -499,7 +499,7 @@ bitmap_elt_insert_after (bitmap head, bi
>     }
>   else
>     {
> -      gcc_assert (head->current);
> +      gcc_checking_assert (head->current);
>       node->next = elt->next;
>       if (node->next)
>        node->next->prev = node;
> @@ -780,7 +780,7 @@ bitmap_first_set_bit (const_bitmap a)
>   BITMAP_WORD word;
>   unsigned ix;
>
> -  gcc_assert (elt);
> +  gcc_checking_assert (elt);
>   bit_no = elt->indx * BITMAP_ELEMENT_ALL_BITS;
>   for (ix = 0; ix != BITMAP_ELEMENT_WORDS; ix++)
>     {
> @@ -815,7 +815,7 @@ bitmap_first_set_bit (const_bitmap a)
>   if (!(word & 0x1))
>     word >>= 1, bit_no += 1;
>
> - gcc_assert (word & 1);
> + gcc_checking_assert (word & 1);
>  #endif
>  return bit_no;
>  }
> @@ -831,7 +831,7 @@ bitmap_last_set_bit (const_bitmap a)
>   BITMAP_WORD word;
>   int ix;
>
> -  gcc_assert (elt);
> +  gcc_checking_assert (elt);
>   while (elt->next)
>     elt = elt->next;
>   bit_no = elt->indx * BITMAP_ELEMENT_ALL_BITS;
> @@ -869,7 +869,7 @@ bitmap_last_set_bit (const_bitmap a)
>     word >>= 1, bit_no += 1;
>  #endif
>
> - gcc_assert (word & 1);
> + gcc_checking_assert (word & 1);
>  return bit_no;
>  }
>
> @@ -975,8 +975,8 @@ bitmap_and_into (bitmap a, const_bitmap
>        }
>     }
>   bitmap_elt_clear_from (a, a_elt);
> -  gcc_assert (!a->current == !a->first);
> -  gcc_assert (!a->current || a->indx == a->current->indx);
> +  gcc_assert (!a->current == !a->first
> +             && (!a->current || a->indx == a->current->indx));
>  }
>
>
> @@ -1175,8 +1175,8 @@ bitmap_and_compl_into (bitmap a, const_b
>          b_elt = b_elt->next;
>        }
>     }
> -  gcc_assert (!a->current == !a->first);
> -  gcc_assert (!a->current || a->indx == a->current->indx);
> +  gcc_assert (!a->current == !a->first
> +             && (!a->current || a->indx == a->current->indx));
>   return changed != 0;
>  }
>
> @@ -1207,7 +1207,7 @@ bitmap_set_range (bitmap head, unsigned
>       bitmap_element_link (head, elt);
>     }
>
> -  gcc_assert (elt->indx == first_index);
> +  gcc_checking_assert (elt->indx == first_index);
>   elt_prev = elt->prev;
>   for (i = first_index; i <= last_index; i++)
>     {
> @@ -1470,8 +1470,8 @@ bitmap_compl_and_into (bitmap a, const_b
>          b_elt = b_elt->next;
>        }
>     }
> -  gcc_assert (!a->current == !a->first);
> -  gcc_assert (!a->current || a->indx == a->current->indx);
> +  gcc_assert (!a->current == !a->first
> +             && (!a->current || a->indx == a->current->indx));
>   return;
>  }
>
> @@ -1528,7 +1535,7 @@ bitmap_elt_ior (bitmap dst, bitmap_eleme
>       else
>        src = b_elt;
>
> -      gcc_assert (src);
> +      gcc_checking_assert (src);
>       changed = bitmap_elt_copy (dst, dst_elt, dst_prev, src, changed);
>     }
>   return changed;
>

Patch

Index: bitmap.c
===================================================================
--- bitmap.c	(revision 160502)
+++ bitmap.c	(working copy)
@@ -499,7 +499,7 @@  bitmap_elt_insert_after (bitmap head, bi
     }
   else
     {
-      gcc_assert (head->current);
+      gcc_checking_assert (head->current);
       node->next = elt->next;
       if (node->next)
 	node->next->prev = node;
@@ -780,7 +780,7 @@  bitmap_first_set_bit (const_bitmap a)
   BITMAP_WORD word;
   unsigned ix;
 
-  gcc_assert (elt);
+  gcc_checking_assert (elt);
   bit_no = elt->indx * BITMAP_ELEMENT_ALL_BITS;
   for (ix = 0; ix != BITMAP_ELEMENT_WORDS; ix++)
     {
@@ -815,7 +815,7 @@  bitmap_first_set_bit (const_bitmap a)
   if (!(word & 0x1))
     word >>= 1, bit_no += 1;
 
- gcc_assert (word & 1);
+ gcc_checking_assert (word & 1);
 #endif
  return bit_no;
 }
@@ -831,7 +831,7 @@  bitmap_last_set_bit (const_bitmap a)
   BITMAP_WORD word;
   int ix;
 
-  gcc_assert (elt);
+  gcc_checking_assert (elt);
   while (elt->next)
     elt = elt->next;
   bit_no = elt->indx * BITMAP_ELEMENT_ALL_BITS;
@@ -869,7 +869,7 @@  bitmap_last_set_bit (const_bitmap a)
     word >>= 1, bit_no += 1;
 #endif
 
- gcc_assert (word & 1);
+ gcc_checking_assert (word & 1);
  return bit_no;
 }
 
@@ -975,8 +975,8 @@  bitmap_and_into (bitmap a, const_bitmap 
 	}
     }
   bitmap_elt_clear_from (a, a_elt);
-  gcc_assert (!a->current == !a->first);
-  gcc_assert (!a->current || a->indx == a->current->indx);
+  gcc_assert (!a->current == !a->first
+	      && (!a->current || a->indx == a->current->indx));
 }
 
 
@@ -1175,8 +1175,8 @@  bitmap_and_compl_into (bitmap a, const_b
 	  b_elt = b_elt->next;
 	}
     }
-  gcc_assert (!a->current == !a->first);
-  gcc_assert (!a->current || a->indx == a->current->indx);
+  gcc_assert (!a->current == !a->first
+	      && (!a->current || a->indx == a->current->indx));
   return changed != 0;
 }
 
@@ -1207,7 +1207,7 @@  bitmap_set_range (bitmap head, unsigned 
       bitmap_element_link (head, elt);
     }
 
-  gcc_assert (elt->indx == first_index);
+  gcc_checking_assert (elt->indx == first_index);
   elt_prev = elt->prev;
   for (i = first_index; i <= last_index; i++)
     {
@@ -1470,8 +1470,8 @@  bitmap_compl_and_into (bitmap a, const_b
 	  b_elt = b_elt->next;
 	}
     }
-  gcc_assert (!a->current == !a->first);
-  gcc_assert (!a->current || a->indx == a->current->indx);
+  gcc_assert (!a->current == !a->first
+	      && (!a->current || a->indx == a->current->indx));
   return;
 }
 
@@ -1528,7 +1535,7 @@  bitmap_elt_ior (bitmap dst, bitmap_eleme
       else
 	src = b_elt;
 
-      gcc_assert (src);
+      gcc_checking_assert (src);
       changed = bitmap_elt_copy (dst, dst_elt, dst_prev, src, changed);
     }
   return changed;