From e0d1ffe3fe75fb094c8fafd70379406ba2829158 Mon Sep 17 00:00:00 2001 From: dberlin Date: Sun, 29 Jul 2001 18:21:08 +0000 Subject: 2001-07-27 Daniel Berlin * regclass.c (reg_scan_mark_refs): Increment REG_N_REFS when we increment REG_N_SETS. 2001-07-26 Daniel Berlin * 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 --- gcc/ChangeLog | 12 ++++++++++++ gcc/regclass.c | 5 ++++- gcc/sbitmap.c | 34 ++++++++++++++++++++++++++++++++++ gcc/sbitmap.h | 2 ++ 4 files changed, 52 insertions(+), 1 deletion(-) 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 + + * regclass.c (reg_scan_mark_refs): Increment REG_N_REFS when we + increment REG_N_SETS. + +2001-07-26 Daniel Berlin + + * 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 * 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)); -- cgit v1.2.1