2004-11-02 Nathan Sidwell <nathan@codesourcery.com>
+ * bitmap.h (bitmap_and, bitmap_and_into, bitmap_and_compl,
+ bitmap_and_compl_into, bitmap_ior, bitmap_iot_into,
+ bitmap_ior_compl, bitmap_xor, bitmap_xor_into): Produce void.
+ (bitmap_ior_and_compl_into): Produce bool.
+ (bitmap_union_of_diff): Rename to ...
+ (bitmap_ior_and_compl): ... here. Produce bool.
+ * bitmap.c (bitmap_ior_and_compl_into): Return bool. Use
+ bitmap_operation directly.
+ (bitmap_union_of_diff): Rename to ...
+ (bitmap_ior_and_compl): ... here. Return bool, use
+ bitmap_operation directly.
+ * df.c (df_rd_transfer_function): Use bitmap_ior_and_compl.
+ (df_ru_transfer_function, df_lr_transfer_function): Likewise.
+ * global.c (modify_bb_reg_pav): Likewise.
+
* bitmap.h (bitmap_equal_p): Return bool.
(bitmap_intersect_p, bitmap_intersect_compl_p): Declare.
* bitmap.c (bitmap_equal_p): Return bool. Compare directly.
}
\f
-/* Or into bitmap TO bitmap FROM1 and'ed with the complement of
- bitmap FROM2. */
+/* Produce TO |= FROM1 & ~FROM2. Return true, if TO changed. */
-int
+bool
bitmap_ior_and_compl_into (bitmap to, bitmap from1, bitmap from2)
{
bitmap_head tmp;
tmp.using_obstack = 0;
bitmap_and_compl (&tmp, from1, from2);
- changed = bitmap_ior_into (to, &tmp);
+ changed = bitmap_operation (to, to, &tmp, BITMAP_IOR);
bitmap_clear (&tmp);
return changed;
}
-int
-bitmap_union_of_diff (bitmap dst, bitmap a, bitmap b, bitmap c)
+/* Produce DST = A | (B & ~C). Return true if DST != A. */
+
+bool
+bitmap_ior_and_compl (bitmap dst, bitmap a, bitmap b, bitmap c)
{
bitmap_head tmp;
int changed;
tmp.using_obstack = 0;
bitmap_and_compl (&tmp, b, c);
- changed = bitmap_ior (dst, &tmp, a);
+ changed = bitmap_operation (dst, a, &tmp, BITMAP_IOR);
bitmap_clear (&tmp);
return changed;
/* Perform an operation on two bitmaps, yielding a third. */
extern int bitmap_operation (bitmap, bitmap, bitmap, enum bitmap_bits);
-#define bitmap_and(DST,A,B) bitmap_operation (DST,A,B,BITMAP_AND)
-#define bitmap_and_into(DST_SRC,B) bitmap_operation (DST_SRC,DST_SRC,B,BITMAP_AND)
-#define bitmap_and_compl(DST,A,B) bitmap_operation (DST,A,B,BITMAP_AND_COMPL)
-#define bitmap_and_compl_into(DST_SRC,B) bitmap_operation (DST_SRC,DST_SRC,B,BITMAP_AND_COMPL)
-#define bitmap_ior(DST,A,B) bitmap_operation (DST,A,B,BITMAP_IOR)
-#define bitmap_ior_into(DST_SRC,B) bitmap_operation (DST_SRC,DST_SRC,B,BITMAP_IOR)
-#define bitmap_ior_compl(DST,A,B) bitmap_operation (DST,A,B,BITMAP_IOR_COMPL)
-#define bitmap_xor(DST,A,B) bitmap_operation (DST,A,B,BITMAP_XOR)
-#define bitmap_xor_into(DST_SRC,B) bitmap_operation (DST_SRC,DST_SRC,B,BITMAP_XOR)
+#define bitmap_and(DST,A,B) (void)bitmap_operation (DST,A,B,BITMAP_AND)
+#define bitmap_and_into(DST_SRC,B) (void)bitmap_operation (DST_SRC,DST_SRC,B,BITMAP_AND)
+#define bitmap_and_compl(DST,A,B) (void)bitmap_operation (DST,A,B,BITMAP_AND_COMPL)
+#define bitmap_and_compl_into(DST_SRC,B) (void)bitmap_operation (DST_SRC,DST_SRC,B,BITMAP_AND_COMPL)
+#define bitmap_ior(DST,A,B) (void)bitmap_operation (DST,A,B,BITMAP_IOR)
+#define bitmap_ior_into(DST_SRC,B) (void)bitmap_operation (DST_SRC,DST_SRC,B,BITMAP_IOR)
+#define bitmap_ior_compl(DST,A,B) (void)bitmap_operation (DST,A,Br,BITMAP_IOR_COMPL)
+#define bitmap_xor(DST,A,B) (void)bitmap_operation (DST,A,B,BITMAP_XOR)
+#define bitmap_xor_into(DST_SRC,B) (void)bitmap_operation (DST_SRC,DST_SRC,B,BITMAP_XOR)
/* `or' into one bitmap the `and' of a second bitmap witih the complement
of a third. Return nonzero if the bitmap changes. */
-extern int bitmap_ior_and_compl_into (bitmap, bitmap, bitmap);
+extern bool bitmap_ior_and_compl_into (bitmap, bitmap, bitmap);
+extern bool bitmap_ior_and_compl (bitmap, bitmap, bitmap, bitmap);
/* Clear a single register in a register set. */
extern void bitmap_clear_bit (bitmap, int);
#define bitmap_zero(a) bitmap_clear (a)
#define bitmap_a_or_b(a,b,c) bitmap_operation (a, b, c, BITMAP_IOR)
#define bitmap_a_and_b(a,b,c) bitmap_operation (a, b, c, BITMAP_AND)
-extern int bitmap_union_of_diff (bitmap, bitmap, bitmap, bitmap);
extern int bitmap_first_set_bit (bitmap);
extern int bitmap_last_set_bit (bitmap);
void *out, void *gen, void *kill,
void *data ATTRIBUTE_UNUSED)
{
- *changed = bitmap_union_of_diff (out, gen, in, kill);
+ *changed = bitmap_ior_and_compl (out, gen, in, kill);
}
void *out, void *gen, void *kill,
void *data ATTRIBUTE_UNUSED)
{
- *changed = bitmap_union_of_diff (in, gen, out, kill);
+ *changed = bitmap_ior_and_compl (in, gen, out, kill);
}
void *out, void *use, void *def,
void *data ATTRIBUTE_UNUSED)
{
- *changed = bitmap_union_of_diff (in, use, out, def);
+ *changed = bitmap_ior_and_compl (in, use, out, def);
}