aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-02-05 08:32:16 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-02-05 08:32:16 +0000
commit7eeb6fc25cf78a0171e8a956f877f95427a01796 (patch)
tree111c364402430c952f98ed2c3d1ecc780d8ee728 /gcc
parente1bbb0bcf74966cbd5199d6391bdef5e8f592ef1 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/bitmap.h8
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 ();
};