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

Reply via email to