* there is an issue with PCH which is partly solved. PCH outputs a tag (in
the *.gch compiled file of a *.h header passed to gcc), value of the
generated enum gt_types_enum in gtype-desc.h. we reserve the 0 value (called
gt_types_enum_firstempty, so the first generated index e.g.
gt_ggc_e_15interface_tuple in the current trunk is now 1, not 0) f that enum
to mean don't persist that type. To permit several advanced plugins to
extend this tagging machinery, we need to make it more dynamic. so, if
GCC_PLUGIN_HAVE_PCH, we generate a dynamic enum like this:
#ifdef GCC_PLUGIN_HAVE_PCH
static int gccplugin_type_base;
#define gt_ggc_e_16basilocalsptr_st
((gccplugin_type_base>0)?(gccplugin_type_base+0):0)
#define gt_ggc_e_13melttriple_st
((gccplugin_type_base>0)?(gccplugin_type_base+1):0)
#define gt_ggc_e_17VEC_melt_ptr_t_gc
((gccplugin_type_base>0)?(gccplugin_type_base+2):0)
I hope you guess the "dynamic enumeration" pattern in the geneerated code...
Basically, plugin using GGC won't really work when generating precompiled
headers, but my patch added an experimental feature to help future patches
for this. (As I tried to explain in several occasions, generating
precompiled headers is not currently very compatible with plugins for
several reasons).