summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4>2001-07-29 18:21:08 +0000
committerdberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4>2001-07-29 18:21:08 +0000
commite0d1ffe3fe75fb094c8fafd70379406ba2829158 (patch)
tree338c1dfc401b2ef68f7aac1d0b6b6ba145663419
parentfa233610fcbee7f3e67375962e6effe96c2b19e2 (diff)
downloadppe42-gcc-e0d1ffe3fe75fb094c8fafd70379406ba2829158.tar.gz
ppe42-gcc-e0d1ffe3fe75fb094c8fafd70379406ba2829158.zip
2001-07-27 Daniel Berlin <dan@cgsoftware.com>
* regclass.c (reg_scan_mark_refs): Increment REG_N_REFS when we increment REG_N_SETS. 2001-07-26 Daniel Berlin <dan@cgsoftware.com> * sbitmap.h: New prototype for sbitmap_a_xor_b. * sbitmap.c (sbitmap_a_xor_b): New function. #ifdef the basic block stuff on the define IN_GCC. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44460 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/regclass.c5
-rw-r--r--gcc/sbitmap.c34
-rw-r--r--gcc/sbitmap.h2
4 files changed, 52 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index cb73400b1ee..e33fa6789a8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,15 @@
+2001-07-27 Daniel Berlin <dan@cgsoftware.com>
+
+ * regclass.c (reg_scan_mark_refs): Increment REG_N_REFS when we
+ increment REG_N_SETS.
+
+2001-07-26 Daniel Berlin <dan@cgsoftware.com>
+
+ * sbitmap.h: New prototype for sbitmap_a_xor_b.
+
+ * sbitmap.c (sbitmap_a_xor_b): New function.
+ ifdef the basic block stuff on IN_GCC.
+
2001-07-29 Neil Booth <neil@cat.daikokuya.demon.co.uk>
* cppexp.c (parse_defined): Always record the macro name.
diff --git a/gcc/regclass.c b/gcc/regclass.c
index bfde1e96bc7..2d80e7eb84a 100644
--- a/gcc/regclass.c
+++ b/gcc/regclass.c
@@ -2427,7 +2427,10 @@ reg_scan_mark_refs (x, insn, note_flag, min_regno)
if (GET_CODE (dest) == REG
&& REGNO (dest) >= min_regno)
- REG_N_SETS (REGNO (dest))++;
+ {
+ REG_N_SETS (REGNO (dest))++;
+ REG_N_REFS (REGNO (dest))++;
+ }
/* If this is setting a pseudo from another pseudo or the sum of a
pseudo and a constant integer and the other pseudo is known to be
diff --git a/gcc/sbitmap.c b/gcc/sbitmap.c
index eb1bf5a2575..5490a6321d1 100644
--- a/gcc/sbitmap.c
+++ b/gcc/sbitmap.c
@@ -99,6 +99,13 @@ sbitmap_copy (dst, src)
memcpy (dst->elms, src->elms, sizeof (SBITMAP_ELT_TYPE) * dst->size);
}
+/* Determine if a == b. */
+int
+sbitmap_equal (a, b)
+ sbitmap a, b;
+{
+ return !memcmp (a->elms, b->elms, sizeof (SBITMAP_ELT_TYPE) * a->size);
+}
/* Zero all elements in a bitmap. */
void
@@ -230,6 +237,31 @@ sbitmap_a_and_b (dst, a, b)
return changed;
}
+/* Set DST to be (A xor B)).
+ Return non-zero if any change is made. */
+
+int
+sbitmap_a_xor_b (dst, a, b)
+ sbitmap dst, a, b;
+{
+ unsigned int i;
+ sbitmap_ptr dstp, ap, bp;
+ int changed = 0;
+
+ for (dstp = dst->elms, ap = a->elms, bp = b->elms, i = 0; i < dst->size;
+ i++, dstp++)
+ {
+ SBITMAP_ELT_TYPE tmp = *ap++ ^ *bp++;
+
+ if (*dstp != tmp)
+ {
+ changed = 1;
+ *dstp = tmp;
+ }
+ }
+ return changed;
+}
+
/* Set DST to be (A or B)).
Return non-zero if any change is made. */
@@ -324,6 +356,7 @@ sbitmap_a_and_b_or_c (dst, a, b, c)
return changed;
}
+#ifdef IN_GCC
/* Set the bitmap DST to the intersection of SRC of successors of
block number BB, using the new flow graph structures. */
@@ -483,6 +516,7 @@ sbitmap_union_of_preds (dst, src, bb)
*r++ |= *p++;
}
}
+#endif
/* Return number of first bit set in the bitmap, -1 if none. */
diff --git a/gcc/sbitmap.h b/gcc/sbitmap.h
index 0aa57a9c967..28e789493ad 100644
--- a/gcc/sbitmap.h
+++ b/gcc/sbitmap.h
@@ -97,6 +97,7 @@ extern void dump_sbitmap_vector PARAMS ((FILE *, const char *,
extern sbitmap sbitmap_alloc PARAMS ((unsigned int));
extern sbitmap *sbitmap_vector_alloc PARAMS ((unsigned int, unsigned int));
extern void sbitmap_copy PARAMS ((sbitmap, sbitmap));
+extern int sbitmap_equal PARAMS ((sbitmap, sbitmap));
extern void sbitmap_zero PARAMS ((sbitmap));
extern void sbitmap_ones PARAMS ((sbitmap));
extern void sbitmap_vector_zero PARAMS ((sbitmap *, unsigned int));
@@ -112,6 +113,7 @@ extern int sbitmap_a_and_b_or_c PARAMS ((sbitmap, sbitmap, sbitmap,
sbitmap));
extern int sbitmap_a_and_b PARAMS ((sbitmap, sbitmap, sbitmap));
extern int sbitmap_a_or_b PARAMS ((sbitmap, sbitmap, sbitmap));
+extern int sbitmap_a_xor_b PARAMS ((sbitmap, sbitmap, sbitmap));
extern int sbitmap_a_subset_b_p PARAMS ((sbitmap, sbitmap));
extern int sbitmap_first_set_bit PARAMS ((sbitmap));
OpenPOWER on IntegriCloud