https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45375
--- Comment #211 from Jan Hubicka <hubicka at gcc dot gnu.org> --- Elfhack is rather sensitive to LTO, but it works for me, so this seems like binutils issue or some elfhack change that happened recently. I wrote instructions for building firefox with LTO here http://hubicka.blogspot.ca/2014/04/linktime-optimization-in-gcc-2-firefox.html Here I am attaching -ftime-report after the symtab hashtable was removed Execution times (seconds) phase setup : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 1536 kB ( 0%) ggc phase opt and generate : 54.29 (58%) usr 1.28 (18%) sys 55.58 (50%) wall 720779 kB (18%) ggc phase stream in : 33.54 (36%) usr 1.84 (26%) sys 35.39 (32%) wall 3389310 kB (82%) ggc phase stream out : 6.00 ( 6%) usr 4.02 (56%) sys 19.99 (18%) wall 0 kB ( 0%) ggc garbage collection : 1.86 ( 2%) usr 0.00 ( 0%) sys 1.86 ( 2%) wall 0 kB ( 0%) ggc callgraph optimization : 0.23 ( 0%) usr 0.00 ( 0%) sys 0.24 ( 0%) wall 9 kB ( 0%) ggc ipa dead code removal : 5.70 ( 6%) usr 0.18 ( 3%) sys 6.15 ( 6%) wall 92 kB ( 0%) ggc ipa inheritance graph : 0.09 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall 883 kB ( 0%) ggc ipa virtual call target : 5.58 ( 6%) usr 0.06 ( 1%) sys 5.32 ( 5%) wall 0 kB ( 0%) ggc ipa devirtualization : 0.13 ( 0%) usr 0.00 ( 0%) sys 0.20 ( 0%) wall 9201 kB ( 0%) ggc ipa cp : 2.34 ( 2%) usr 0.21 ( 3%) sys 2.55 ( 2%) wall 223628 kB ( 5%) ggc ipa inlining heuristics : 26.97 (29%) usr 0.67 ( 9%) sys 27.66 (25%) wall 865791 kB (21%) ggc ipa comdats : 0.21 ( 0%) usr 0.00 ( 0%) sys 0.21 ( 0%) wall 0 kB ( 0%) ggc ipa lto gimple in : 0.07 ( 0%) usr 0.11 ( 2%) sys 0.21 ( 0%) wall 0 kB ( 0%) ggc ipa lto gimple out : 0.46 ( 0%) usr 0.19 ( 3%) sys 0.65 ( 1%) wall 0 kB ( 0%) ggc ipa lto decl in : 24.76 (26%) usr 1.28 (18%) sys 26.08 (23%) wall 2571773 kB (63%) ggc ipa lto decl out : 5.45 ( 6%) usr 0.28 ( 4%) sys 5.75 ( 5%) wall 0 kB ( 0%) ggc ipa lto cgraph I/O : 1.13 ( 1%) usr 0.24 ( 3%) sys 1.38 ( 1%) wall 414551 kB (10%) ggc ipa lto decl merge : 2.57 ( 3%) usr 0.01 ( 0%) sys 2.58 ( 2%) wall 8227 kB ( 0%) ggc ipa lto cgraph merge : 1.72 ( 2%) usr 0.00 ( 0%) sys 1.72 ( 2%) wall 12166 kB ( 0%) ggc whopr wpa : 1.04 ( 1%) usr 0.00 ( 0%) sys 1.04 ( 1%) wall 2 kB ( 0%) ggc whopr wpa I/O : 0.03 ( 0%) usr 3.55 (50%) sys 13.51 (12%) wall 0 kB ( 0%) ggc whopr partitioning : 4.97 ( 5%) usr 0.06 ( 1%) sys 5.02 ( 5%) wall 3738 kB ( 0%) ggc ipa reference : 3.62 ( 4%) usr 0.12 ( 2%) sys 3.75 ( 3%) wall 0 kB ( 0%) ggc ipa profile : 0.33 ( 0%) usr 0.01 ( 0%) sys 0.33 ( 0%) wall 0 kB ( 0%) ggc ipa pure const : 3.86 ( 4%) usr 0.01 ( 0%) sys 3.88 ( 3%) wall 0 kB ( 0%) ggc tree eh : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree CFG cleanup : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 0 kB ( 0%) ggc varconst : 0.05 ( 0%) usr 0.16 ( 2%) sys 0.13 ( 0%) wall 0 kB ( 0%) ggc unaccounted todo : 0.65 ( 1%) usr 0.00 ( 0%) sys 0.64 ( 1%) wall 0 kB ( 0%) ggc TOTAL : 93.84 7.14 110.98 4111626 kB there are some improvements in devirtualization performance that used quite few decl->symbol lookups. (about 20%)