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