http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42371
--- Comment #13 from Matt Hargett <matt at use dot net> 2013-01-17 18:28:18 UTC --- No. 4.6 doesn't devirt (at -O2 or -O3) and therefore the DCE isn't relevant. At both -O2 and -O3, with and without -fwhole-program, both with and without adjustin declarations one()/two() to one(void)/two(void): 4.7 and google/4.7 both devirt correctly but the DCE on the function bodies doesn't happen. 4.8 also devirts correctly, but the DCE on the function bodies doesn't happen.