tistics (void);

extern void stringpool_statistics (void);

/* Heuristics.  */
extern void init_ggc_heuristics (void);

#define ggc_alloc_rtvec_sized(NELT)				\
  (rtvec_def *) ggc_internal_alloc (sizeof (struct rtvec_def)		\
		       + ((NELT) - 1) * sizeof (rtx))		\

/* Memory statistics passing versions of some allocators.  Too few of them to
   make gengtype produce them, so just define the needed ones here.  */
inline struct rtx_def *
ggc_alloc_rtx_def_stat (size_t s CXX_MEM_STAT_INFO)
{
  return (struct rtx_def *) ggc_internal_alloc (s PASS_MEM_STAT);
}

inline union tree_node *
ggc_alloc_tree_node_stat (size_t s CXX_MEM_STAT_INFO)
{
  return (union tree_node *) ggc_internal_alloc (s PASS_MEM_STAT);
}

inline union tree_node *
ggc_alloc_cleared_tree_node_stat (size_t s CXX_MEM_STAT_INFO)
{
  return (union tree_node *) ggc_internal_cleared_alloc (s PASS_MEM_STAT);
}

inline gimple *
ggc_alloc_cleared_gimple_statement_stat (size_t s CXX_MEM_STAT_INFO)
{
  return (gimple *) ggc_internal_cleared_alloc (s PASS_MEM_STAT);
}

inline void
gt_ggc_mx (const char *s)
{
  ggc_test_and_set_mark (const_cast<char *> (s));
}

inline void
gt_pch_nx (const char *)
{
}

inline void
gt_ggc_mx (int)
{
}

inline void
gt_pch_nx (int)
{
}

inline void
gt_pch_nx (unsigned int)
{
}

#endif
