irange_allocator class
authorAldy Hernandez <aldyh@redhat.com>
Fri, 11 Sep 2020 08:15:12 +0000 (10:15 +0200)
committerAldy Hernandez <aldyh@redhat.com>
Mon, 28 Sep 2020 22:23:53 +0000 (00:23 +0200)
commit77a23a825c2fcdac2a832998c228fd9d4ef99dd1
tree731874d5e64de27b803291879d0369a66280085f
parent69c56ce673d1e1d4508e82053a32011f807c6088
irange_allocator class

This is the irange storage class.  It is used to allocate the
minimum amount of storage needed for a given irange.  Storage is
automatically freed at destruction of the storage class.

It is meant for long term storage, as opposed to int_range_max
which is meant for intermediate temporary results on the stack.

The general gist is:

irange_allocator alloc;

// Allocate an irange of 5 sub-ranges.
irange *p = alloc.allocate (5);

// Allocate an irange of 3 sub-ranges.
irange *q = alloc.allocate (3);

// Allocate an irange with as many sub-ranges as are currently
// used in "some_other_range".
irange *r = alloc.allocate (some_other_range);

gcc/ChangeLog:

* value-range.h (class irange): Add irange_allocator friend.
(class irange_allocator): New.
gcc/value-range.h