https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116891

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|                            |8.5.0
            Summary|invalid optimization of     |[12/13/14/15 Regression]
                   |-fma(-x,y,-z) when -03 and  |invalid optimization of
                   |-frounding-math are used    |-fma(-x,y,-z) when -03 and
                   |                            |-frounding-math are used
      Known to fail|                            |9.1.0
   Target Milestone|---                         |12.5
             Status|WAITING                     |NEW

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
14.2.0 match.pd line #s.
Folding statement: _4 = fma (_3, ax_18, _2);
Applying pattern match.pd:8686, gimple-match-4.cc:17507
Applying pattern match.pd:8655, gimple-match-3.cc:3934
gimple_simplified to _4 = .FNMS (ax_18, ax_18, ae_17);
Folded into: _4 = .FNMS (ax_18, ax_18, ae_17);

Folding statement: r_19 = -_4;
Applying pattern match.pd:8707, gimple-match-2.cc:4909
gimple_simplified to r_19 = .FMA (ax_18, ax_18, ae_17);
Folded into: r_19 = .FMA (ax_18, ax_18, ae_17);


 (simplify
  (negate (IFN_FNMS@3 @0 @1 @2))
  (if (single_use (@3))
   (IFN_FMA @0 @1 @2))))

I think this pattern is only valid for !flag_rounding_math.

The ones which pushes negate into FMAs kinds are only valid for
!flag_rounding_math .

Reply via email to