X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fbitmap.h;h=bbc0e20cfefe778894f4e766daedc5085ab37ef0;hb=2abf995f90bb8441b573eba4ea14c0b8e0c1bba9;hp=2a3b0b4baf8c0651862e5fcb4d07cdd58264c5ec;hpb=349621f075f6bdfb362a743f4f4d47e0bb53c7c0;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/bitmap.h b/gcc/bitmap.h index 2a3b0b4baf8..bbc0e20cfef 100644 --- a/gcc/bitmap.h +++ b/gcc/bitmap.h @@ -1,6 +1,6 @@ /* Functions to support general ended bitmaps. Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GCC. @@ -42,8 +42,7 @@ typedef unsigned long BITMAP_WORD; #define BITMAP_ELEMENT_ALL_BITS (BITMAP_ELEMENT_WORDS * BITMAP_WORD_BITS) /* Obstack for allocating bitmaps and elements from. */ -typedef struct bitmap_obstack GTY (()) -{ +typedef struct GTY (()) bitmap_obstack { struct bitmap_element_def *elements; struct bitmap_head_def *heads; struct obstack GTY ((skip)) obstack; @@ -61,8 +60,7 @@ typedef struct bitmap_obstack GTY (()) bitmap_elt_clear_from to be implemented in unit time rather than linear in the number of elements to be freed. */ -typedef struct bitmap_element_def GTY(()) -{ +typedef struct GTY(()) bitmap_element_def { struct bitmap_element_def *next; /* Next element. */ struct bitmap_element_def *prev; /* Previous element. */ unsigned int indx; /* regno/BITMAP_ELEMENT_ALL_BITS. */ @@ -74,7 +72,7 @@ struct bitmap_descriptor; statistics we need to add a bitmap descriptor pointer. As it is not collected, we can just GTY((skip)) it. */ -typedef struct bitmap_head_def GTY(()) { +typedef struct GTY(()) bitmap_head_def { bitmap_element *first; /* First element in linked list. */ bitmap_element *current; /* Last element looked at. */ unsigned int indx; /* Index of last element looked at. */ @@ -131,16 +129,18 @@ extern bool bitmap_ior_into (bitmap, const_bitmap); extern void bitmap_xor (bitmap, const_bitmap, const_bitmap); extern void bitmap_xor_into (bitmap, const_bitmap); +/* DST = A | (B & C). Return true if DST changes. */ +extern bool bitmap_ior_and_into (bitmap DST, const_bitmap B, const_bitmap C); /* DST = A | (B & ~C). Return true if DST changes. */ extern bool bitmap_ior_and_compl (bitmap DST, const_bitmap A, const_bitmap B, const_bitmap C); /* A |= (B & ~C). Return true if A changes. */ extern bool bitmap_ior_and_compl_into (bitmap DST, const_bitmap B, const_bitmap C); -/* Clear a single register in a register set. */ -extern void bitmap_clear_bit (bitmap, int); +/* Clear a single bit in a bitmap. Return true if the bit changed. */ +extern bool bitmap_clear_bit (bitmap, int); -/* Set a single register in a register set. */ -extern void bitmap_set_bit (bitmap, int); +/* Set a single bit in a bitmap. Return true if the bit changed. */ +extern bool bitmap_set_bit (bitmap, int); /* Return true if a register is set in a register set. */ extern int bitmap_bit_p (bitmap, int); @@ -183,6 +183,7 @@ extern void bitmap_obstack_free (bitmap); #define dump_bitmap(file, bitmap) bitmap_print (file, bitmap, "", "\n") #define bitmap_zero(a) bitmap_clear (a) extern unsigned bitmap_first_set_bit (const_bitmap); +extern unsigned bitmap_last_set_bit (const_bitmap); /* Compute bitmap hash (for purposes of hashing etc.) */ extern hashval_t bitmap_hash(const_bitmap); @@ -194,8 +195,8 @@ extern hashval_t bitmap_hash(const_bitmap); #define BITMAP_GGC_ALLOC() bitmap_gc_alloc () /* Do any cleanup needed on a bitmap when it is no longer used. */ -#define BITMAP_FREE(BITMAP) \ - ((void)(bitmap_obstack_free (BITMAP), (BITMAP) = NULL)) +#define BITMAP_FREE(BITMAP) \ + ((void) (bitmap_obstack_free ((bitmap) BITMAP), (BITMAP) = (bitmap) NULL)) /* Iterator for bitmaps. */