https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63671
--- Comment #15 from Jan Hubicka <hubicka at gcc dot gnu.org> --- The performance regression seems solved on my setup (Trevor, can you double check?). -Ofast -fdevirtualize: Time spent in iteration: 4.11598 -Ofast -fno-devirtualize Time spent in iteration: 4.17063 -Ofast -fno-devirtualize -fno-icf Time spent in iteration: 3.34953 GCC 4.7: Time spent in iteration: 5.53831 GCC 4.8: Time spent in iteration: 3.4625 GCC 4.9: Time spent in iteration: 2.79834 $ size 4.7 4.9 devirt nodevirt text data bss dec hex filename 785615 1204 2904 789723 c0cdb 4.7 620822 1268 3320 625410 98b02 4.8 615847 1180 3160 620187 9769b 4.9 680881 1228 3064 685173 a7475 devirt 650161 1228 3064 654453 9fc75 nodevirt 681709 1228 3064 686001 a77b1 tramp-devirt-noicf So 4.9 still outperforms mainline; ICF confuse inliner and moreover devirtualization accounts 5% of code for no visible benefits.