diff options
author | Richard Biener <rguenther@suse.de> | 2019-02-05 08:32:16 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-02-05 08:32:16 +0000 |
commit | 7eeb6fc25cf78a0171e8a956f877f95427a01796 (patch) | |
tree | 111c364402430c952f98ed2c3d1ecc780d8ee728 /gcc | |
parent | e1bbb0bcf74966cbd5199d6391bdef5e8f592ef1 (diff) | |
download | gcc-7eeb6fc25cf78a0171e8a956f877f95427a01796.zip gcc-7eeb6fc25cf78a0171e8a956f877f95427a01796.tar.gz gcc-7eeb6fc25cf78a0171e8a956f877f95427a01796.tar.bz2 |
re PR middle-end/89150 (Tree form bitmaps break GC)
2019-02-05 Richard Biener <rguenther@suse.de>
PR middle-end/89150
* bitmap.h (struct bitmap_obstack): Do not mark GTY.
(struct bitmap_element): Drop chain_prev so we properly recurse on
the prev member, supporting tree views.
(struct bitmap_head): GTY skip the obstack member.
From-SVN: r268530
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/bitmap.h | 8 |
2 files changed, 12 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 21d80ad..f7c8b50 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2019-02-05 Richard Biener <rguenther@suse.de> + + PR middle-end/89150 + * bitmap.h (struct bitmap_obstack): Do not mark GTY. + (struct bitmap_element): Drop chain_prev so we properly recurse on + the prev member, supporting tree views. + (struct bitmap_head): GTY skip the obstack member. + 2019-02-04 Alexander Monakov <amonakov@ispras.ru> PR c/88698 diff --git a/gcc/bitmap.h b/gcc/bitmap.h index 4e3254e..11c75e9 100644 --- a/gcc/bitmap.h +++ b/gcc/bitmap.h @@ -288,10 +288,10 @@ typedef unsigned long BITMAP_WORD; #define BITMAP_ELEMENT_ALL_BITS (BITMAP_ELEMENT_WORDS * BITMAP_WORD_BITS) /* Obstack for allocating bitmaps and elements from. */ -struct GTY (()) bitmap_obstack { +struct bitmap_obstack { struct bitmap_element *elements; struct bitmap_head *heads; - struct obstack GTY ((skip)) obstack; + struct obstack obstack; }; /* Bitmap set element. We use a linked list to hold only the bits that @@ -306,7 +306,7 @@ struct GTY (()) bitmap_obstack { bitmap_elt_clear_from to be implemented in unit time rather than linear in the number of elements to be freed. */ -struct GTY((chain_next ("%h.next"), chain_prev ("%h.prev"))) bitmap_element { +struct GTY((chain_next ("%h.next"))) bitmap_element { /* In list form, the next element in the linked list; in tree form, the left child node in the tree. */ struct bitmap_element *next; @@ -340,7 +340,7 @@ struct GTY(()) bitmap_head { /* Last element looked at. */ bitmap_element * GTY((skip(""))) current; /* Obstack to allocate elements from. If NULL, then use GGC allocation. */ - bitmap_obstack *obstack; + bitmap_obstack * GTY((skip(""))) obstack; void dump (); }; |