The following code snippet triggers an ICE on mainline when compiled with "g++ -O -ffast-math":
===================================================== struct A { ~A(); }; double& foo(); inline void bar (double d) { foo() /= d; } void baz() { A a; bar(2); } ===================================================== This is a very recent regression (not present in 4.3-20070607). Uros, I'd guess your patch is responsible for the regression: 2007-06-16 Uros Bizjak PR middle-end/31723 * hooks.c (hook_tree_tree_bool_null): New hook. * hooks.h (hook_tree_tree_bool_null): Add prototype. * tree-pass.h (pass_convert_to_rsqrt): Declare. * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt. * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b) and convert it to reciprocal a*rfunc(b). -- Summary: [4.3 regression] ICE with reciprocals and -ffast-math Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: ice-on-valid-code, monitored Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: reichelt at gcc dot gnu dot org OtherBugsDependingO 31723 nThis: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32383