I like this approach a lot.  One thing, though:

On 04/01/2016 03:13 PM, Patrick Palka wrote:
+struct GTY((chain_next ("%h.prev"))) bpr_entry
+{
+  tree body;
+  tree parms;
+  tree res;
+  struct bpr_entry *prev;
+};
+
  /* Representation of entries in the constexpr function definition table.  */

  struct GTY((for_user)) constexpr_fundef {
    tree decl;
    tree body;
+  /* A chain of unused copies of this function's body awaiting reuse for
+     CALL_EXPR evaluation.  */
+  struct bpr_entry *bpr_freelist;
  };

The freelist should be discarded on GC. I think the way to achieve that is to put all the freelists into a separate deletable hash table rather than hang them off the fundefs.

Jason

Reply via email to