On Mon, May 02, 2011 at 04:46:23PM +0200, Richard Guenther wrote:
> >> *************** typedef void (lto_free_section_data_f) (
> >> *** 346,355 ****
> >> struct lto_streamer_cache_d
> >> {
> >> /* The mapping between tree nodes and slots into the nodes array. */
> >> ! htab_t node_map;
> >> !
> >> ! /* Node map to store entries into. */
> >> ! alloc_pool node_map_entries;
> >>
> >> /* The nodes pickled so far. */
> >> VEC(tree,heap) *nodes;
> >> --- 346,352 ----
> >> struct lto_streamer_cache_d
> >> {
> >> /* The mapping between tree nodes and slots into the nodes array. */
> >> ! struct pointer_map_t GTY((skip)) *node_map;
> >
> > If you skip node_map you can end up with false entries for re-used
> > trees. So I don't think that's a good idea.
>
> Or we can safely mark the whole struct as non-GC (and also allocate
> it that way).
We already do (see lto-streamer.c:lto_streamer_cache_create; there's no
GTY marker on lto_streamer_cache_d. So Honza's original GTY annotation
there is superfluous.
-Nathan