http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42802
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
Target Milestone|--- |4.6.0
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> 2011-12-26
19:47:12 UTC ---
vmovsd .LC0(%rip), %xmm2
vfmaddsd %xmm0, %xmm2, %xmm1, %xmm3
vfnmaddsd %xmm0, %xmm2, %xmm1, %xmm0
vmulsd %xmm0, %xmm3, %xmm0
Fixed by:
r166304 | rguenth | 2010-11-04 03:56:22 -0700 (Thu, 04 Nov 2010) | 38 lines
2010-11-04 Richard Guenther <[email protected]>
Richard Henderson <[email protected]>
* tree.def (FMA_EXPR): New tree code.
* expr.c (expand_expr_real_2): Add FMA_EXPR expansion code.
* gimple.c (gimple_rhs_class_table): FMA_EXPR is a GIMPLE_TERNARY_RHS.
* tree-cfg.c (verify_gimple_assign_ternary): Verify FMA_EXPR types.
* tree-inline.c (estimate_operator_cost): Handle FMA_EXPR.
* gimple-pretty-print.c (dump_ternary_rhs): Likewise.
* tree-ssa-math-opts.c (convert_mult_to_fma): New function.
(execute_optimize_widening_mul): Call it. Reorganize to allow
dead stmt removal. Move TODO flags ...
(pass_optimize_widening_mul): ... here.
* flag-types.h (enum fp_contract_mode): New enum.
....