------- Comment #1 from rguenth at gcc dot gnu dot org 2008-05-22 12:28 ------- One slow "leaker" of memory for large TUs is the operands_bitmap_obstack from the operand scanner. From it the stmt annotation loaded and stored symbols bitmaps are allocated but never freed until after the last function has gone out of SSA.
We should consider moving these to GC memory or to add support for using alloc pools for bitmap allocations. Memory partitioning uses loads of bitmaps for the parent tags: tree-ssa-alias.c:1311 (update_reference_c 5424467 433957360 433957360 433957360 76199616 Likewise PTA still does that: tree-ssa-structalias.c:4850 (find_what_p_ 62908 555059880 42045880 42032640 62415 Overall the variable annotations account for most of the GC memory used: tree-ssanames.c:146 (make_ssa_name_fn) 33297312: 2.1% 0: 0.0% 0: 0.0% 0: 0.0% 346847 bitmap.c:229 (bitmap_element_allocate) 116709320: 7.4% 0: 0.0% 0: 0.0% 16672760:11.7% 2084095 ggc-common.c:179 (ggc_calloc) 409212224:25.8% 12684056: 5.0% 1974632: 2.2% 4572784: 3.2% 194426 tree-dfa.c:153 (create_var_ann) 482008296:30.4% 0: 0.0% 0: 0.0% 43818936:30.6% 5477367 Total 1586488294 255567175 90963544 143104669 18411405 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36291