http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45375
--- Comment #93 from Jan Hubicka <hubicka at gcc dot gnu.org> 2011-05-19 22:41:41 UTC --- Time report: ipa lto gimple out : 10.28 ( 4%) usr 1.05 (11%) sys 11.35 ( 4%) wall 0 kB ( 0%) ggc ipa lto decl in : 98.45 (37%) usr 2.23 (24%) sys 100.91 (36%) wall 713587 kB (45%) ggc ipa lto decl out : 82.47 (31%) usr 2.92 (31%) sys 85.84 (31%) wall 0 kB ( 0%) ggc inline heuristics : 31.74 (12%) usr 0.14 ( 1%) sys 32.07 (11%) wall 240317 kB (15%) ggc TOTAL : 269.41 9.36 279.78 1595687 kB GIMPLE type table: size 1048573, 427153 elements, 6361837 searches, 23794591 collisions (ratio: 3.740208) GIMPLE type hash table: size 4194301, 1452245 elements, 72676685 searches, 47569100 collisions (ratio: 0.654530) GIMPLE canonical type table: size 65521, 48844 elements, 762160 searches, 552280 collisions (ratio: 0.724625) GIMPLE canonical type hash table: size 1048573, 402512 elements, 2184661 searches, 1627547 collisions (ratio: 0.744988) Nice improvement. My reading is that GIMPLE type hash table would be better an TYPE_UID indexed array (or an pointer map if it was told to be in GGC). 76 million searches is quite a lot. Honza