On 09/30/2015 12:46 PM, Jakub Jelinek wrote:
On Wed, Sep 30, 2015 at 11:44:38AM -0600, Jeff Law wrote:
+/* Move all SSA_NAMEs from FREE_SSA_NAMES_QUEUE to FREE_SSA_NAMES.
+
+ We do not, but should have a mode to verify the state of the SSA_NAMEs
+ lists. In particular at this point every name must be in the IL,
+ on the free list or in the queue. Anything else is an error. */
+
+void
+flush_ssaname_freelist (void)
+{
+ while (!vec_safe_is_empty (FREE_SSANAMES_QUEUE (cfun)))
+ {
+ tree t = FREE_SSANAMES_QUEUE (cfun)->pop ();
+ vec_safe_push (FREE_SSANAMES (cfun), t);
+ }
Isn't it faster to just do:
vec_safe_splice (FREE_SSANAMES (cfun), FREE_SSANAMES_QUEUE (cfun));
vec_safe_truncate (FREE_SSANAMES_QUEUE (cfun));
or so? I mean, rather than reallocating the vector perhaps many times
grow it just once to the exact size, and memcpy there the data.
Probably.
I'm pondering a bit of refactoring in there, I'll look at fixing this
while I'm in there.
jeff