https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70594

--- Comment #14 from Nathan Sidwell <nathan at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #13)

> If you remove the deletableness, then I'd say it is really important to
> empty the whole freelist at least at the end of parsing, so that when GIMPLE
> optimizations and RTL optimizations run memory is not occupied by those
> anymore.

Makes sense.

> And perhaps instead of GC use some LRU eviction from the freelist if there
> are too many constexpr functions on the freelist (but it certainly shouldn't
> be dependent on stuff like free memory or GC etc.), so that builds are
> reproduceable.  There could be some --param with some sane defaults on how
> many functions in freelist can be kept.

Good idea.  I guess the right place is in cxx_eval_call_expression, when we
find  we're inserting a new entry we  should zap its current contents if it is
'too large'.

To be specific, I mean changing constexpr_call_table,  which holds call
results.  Not changing the fundef_copies_table, which holds lists of copied
functions and can remain  GC-deletable.

Reply via email to