From a4d51bfbc600be2acc90dc413c14602ec9cb3edc Mon Sep 17 00:00:00 2001 From: Trevor Saunders Date: Sun, 14 May 2017 00:38:24 +0000 Subject: [PATCH] store the bitmap_head within the auto_bitmap This gets rid of one allocation per bitmap. Often the bitmap_head is now on the stack, when it isn't its part of some other struct on the heap instead of being refered to by that struct. On 64 bit platforms this will increase the size of such structs by 24 bytes, but its an over all win since we don't need an 8 byte pointer pointing at the bitmap_head. Given that the auto_bitmap owns the bitmap_head anyway we know there would never be a place where two auto_bitmaps would refer to the same bitmap_head object. gcc/ChangeLog: 2017-05-13 Trevor Saunders * bitmap.h (class auto_bitmap): Change type of m_bits to bitmap_head, and adjust ctor / dtor and member operators. From-SVN: r248017 --- gcc/ChangeLog | 5 +++++ gcc/bitmap.h | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9ec0a530f3f..1edc553523f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-05-13 Trevor Saunders + + * bitmap.h (class auto_bitmap): Change type of m_bits to + bitmap_head, and adjust ctor / dtor and member operators. + 2017-05-13 Uros Bizjak * compare-elim.c (equivalent_reg_at_start): Return NULL_RTX diff --git a/gcc/bitmap.h b/gcc/bitmap.h index f158b447357..99a95444583 100644 --- a/gcc/bitmap.h +++ b/gcc/bitmap.h @@ -806,10 +806,10 @@ bmp_iter_and_compl (bitmap_iterator *bi, unsigned *bit_no) class auto_bitmap { public: - auto_bitmap () { bits = BITMAP_ALLOC (NULL); } - ~auto_bitmap () { BITMAP_FREE (bits); } + auto_bitmap () { bitmap_initialize (&m_bits, &bitmap_default_obstack); } + ~auto_bitmap () { bitmap_clear (&m_bits); } // Allow calling bitmap functions on our bitmap. - operator bitmap () { return bits; } + operator bitmap () { return &m_bits; } private: // Prevent making a copy that references our bitmap. @@ -820,7 +820,7 @@ class auto_bitmap auto_bitmap &operator = (auto_bitmap &&); #endif - bitmap bits; + bitmap_head m_bits; }; #endif /* GCC_BITMAP_H */ -- 2.30.2