------- Comment #4 from pinskia at gcc dot gnu dot org 2006-06-30 05:37 ------- It has to do with the return only. The reduced code ICEs at -O1 and above only: double foo() { return 0.0;} because otherwise we get a temporary variable.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27875