S, in GC-able memory.  */
#define ggc_strdup(S) ggc_alloc_string ((S), -1 MEM_STAT_INFO)

/* Invoke the collector.  Garbage collection occurs only when this
   function is called, not during allocations.  */
enum ggc_collect {
  GGC_COLLECT_HEURISTIC,
  GGC_COLLECT_FORCE
};
extern void ggc_collect (enum ggc_collect mode = GGC_COLLECT_HEURISTIC);

/* Return unused memory pages to the system.  */
extern void ggc_trim (void);

/* Assume that all GGC memory is reachable and grow the limits for next collection. */
extern void ggc_grow (void);

/* Register an additional root table.  This can be useful for some
   plugins.  Does nothing if the passed pointer is NULL. */
extern void ggc_register_root_tab (const struct ggc_root_tab *);

/* Read objects previously saved with gt_pch_save from F.  */
extern void gt_pch_restore (FILE *f);
