On Wed, Aug 28, 2013 at 3:05 PM, Jakub Jelinek <ja...@redhat.com> wrote: > On Wed, Aug 28, 2013 at 02:57:01PM +0200, Marek Polacek wrote: >> On Wed, Aug 28, 2013 at 02:49:54PM +0200, Richard Biener wrote: >> > On Wed, Aug 28, 2013 at 2:15 PM, Marek Polacek <pola...@redhat.com> wrote: >> > > On Wed, Aug 28, 2013 at 12:40:50PM +0200, Richard Biener wrote: >> > >> On Tue, Aug 27, 2013 at 2:33 PM, Marek Polacek <pola...@redhat.com> >> > >> wrote: >> > >> > It turned out that for tree -> tree mapping we don't need the hash >> > >> > table at all; pointer map is much more convenient. So this patch >> > >> > weeds out the hash table out of ubsan and introduces pointer map >> > >> > instead. Quite a lot of code could go away--no need to set the >> > >> > alloc pools up etc. >> > >> > >> > >> > Regtested, ran bootstrap-ubsan on x86_64-linux. Applying to the >> > >> > ubsan branch. >> > >> >> > >> You can use the type-safe pointer_map <tree> now (ok, only the data type >> > >> is type safe, the pointer is still void). >> > > >> > > Thanks, done with the following. Please let me know if you see >> > > something wrong in this; otherwise I'll commit it if the >> > > bootstrap-ubsan passes. >> > >> > Probably misses freeing of the pointer-map using 'delete' somewhere. >> >> That's a problem, since ubsan is not a pass, we can't simply delete >> the map at the end of the pass when it's not needed anymore... >> >> Perhaps some GTY(()) stuff could do it, but I don't know which one. > > You basically want to keep the pointer map for as long as you can > lookup types, which is done now from both FEs and > middle-end? I guess it is the same category as say > debug_expr_for_decl or value_expr_for_decl map tables, which we never free > either. But for those we indeed > GTY ((if_marked ("tree_decl_map_marked_p"), param_is (struct tree_decl_map))) > and thus remove items if the original decl is not referenced from anywhere > else; but pointer_map doesn't allow item removal; do we walk it for GC at > all? If so, it might prevent some types from being GC collected, on the > other side right now it isn't expected that too many types will be put into > the map.
pointer-map is not GC enabled. Richard. > Jakub