Commit a5c9f2b7 by Trevor Saunders Committed by Trevor Saunders

allow constructing a auto_vec with a preallocation, and a possibly larger actual allocation size

This allows us to set the capacity of the vector when we construct it,
and still use a stack buffer when the size is small enough.

gcc/ChangeLog:

2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* genrecog.c (int_set::int_set): Explicitly construct our
	auto_vec base class.
	* vec.h (auto_vec::auto_vec): New constructor.

From-SVN: r248019
parent 4b5c84f4
2017-05-13 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* genrecog.c (int_set::int_set): Explicitly construct our
auto_vec base class.
* vec.h (auto_vec::auto_vec): New constructor.
2017-05-13 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* bitmap.h (class auto_bitmap): New constructor taking
bitmap_obstack * argument.
......
......@@ -1407,14 +1407,16 @@ struct int_set : public auto_vec <uint64_t, 1>
iterator end ();
};
int_set::int_set () {}
int_set::int_set () : auto_vec<uint64_t, 1> () {}
int_set::int_set (uint64_t label)
int_set::int_set (uint64_t label) :
auto_vec<uint64_t, 1> ()
{
safe_push (label);
}
int_set::int_set (const int_set &other)
int_set::int_set (const int_set &other) :
auto_vec<uint64_t, 1> ()
{
safe_splice (other);
}
......
......@@ -1272,6 +1272,18 @@ public:
this->m_vec = &m_auto;
}
auto_vec (size_t s)
{
if (s > N)
{
this->create (s);
return;
}
m_auto.embedded_init (MAX (N, 2), 0, 1);
this->m_vec = &m_auto;
}
~auto_vec ()
{
this->release ();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment