http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47205
--- Comment #1 from Jan Hubicka <hubicka at ucw dot cz> 2011-01-07 12:47:23 UTC --- > extern int foo(void); > > int main(void) > { > return foo() * 0; > } This is because gimple part of optimizers for some reason leads to the following in the optimized dump: main () { <bb 2>: foo (); return 0; } and only RTL optimizers do the trick. This is weird since pure/const detect function as pure (seen in pure-const dump) Read info for foo/2 const nothrow pure const state: const previously known state: const but tree-ssa-dce apparently fails to remove the statement. I guess it is confused by lack of return value. I will take a look. But this is tree-optimization bug. Honza