http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45375
--- Comment #185 from Jan Hubicka <hubicka at gcc dot gnu.org> --- I merged in some patches intended to reduce memory of Firefox LTO and also updated firefox tree. Some more involved patches are on the way, so it is summary where we stand now. WPA usage in TOP is 10GB now. 1) After streaming in trees, the GGC usage is now 5.1GB - 2.5GB are trees, - 1GB are linemaps - 0.8GB are decl maps (decl states) tree_list 12561507 integer_type 1511296 pointer_type 4610735 record_type 8139077 method_type 2401664 integer_cst 6677946 string_cst 2127890 function_decl 6069299 label_decl 504859 field_decl 5104957 var_decl 596020 const_decl 5401253 parm_decl 9002744 type_decl 10150100 result_decl 2181250 addr_expr 4173661 tree_binfo 4780477 I have cache that cuts down the linemaps + patch to not stream PARM_DECLs and RETURN_DECLs. With this the usage goes bellow 3GB. 2) Cgraph streaming now becomes important factor. GGC usage goes up to 7.7GB GGC use: - cgraph nodes themselves are 1.5GB - inline summaries are 0.5GB - cgraph edges are 3.7GB - IPA references 2.3GB - IPA-prop 0.7GB Off GGC - IPA-prop 0.6GB - Inline summary 0.5GB - symtab encoder 0.17GB Here one can easily - compress the vectors recording definitions - pull off parts of cgraph nodes that are not really needed by WPA (nested info, etc.) - perhaps implement of streaming of merged cgraph. so good news is that we now have a lot of interesting low hanging fruit. Bad news is that tree streaming still feels slow. I suppose we need to dig more into what trees really need to go into WPA...