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

--- Comment #5 from rguenther at suse dot de <rguenther at suse dot de> ---
On Thu, 10 Dec 2015, kugan at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61139
> 
> kugan at gcc dot gnu.org changed:
> 
>            What    |Removed                     |Added
> ----------------------------------------------------------------------------
>              Status|RESOLVED                    |NEW
>          Resolution|DUPLICATE                   |---
> 
> --- Comment #4 from kugan at gcc dot gnu.org ---
> After handling float, still seeing difference in asm. diff of .199t.resx now
> looks:
> 
> -;; Function void mirror(float&, float) (_Z6mirrorRff, funcdef_no=0,
> decl_uid=2704, cgraph_uid=0, symbol_order=0)
> +;; Function void mirror(float&, float) (_Z6mirrorRff, funcdef_no=0,
> decl_uid=2472, cgraph_uid=0, symbol_order=0)
> 
>  void mirror(float&, float) (float & x, float w)
>  {
>    float _3;
>    float _6;
> -  float reassocmul_9;
> +  float _8;
> 
>    <bb 2>:
>    _3 = *x_2(D);
> -  reassocmul_9 = w_4(D) * 2.0e+0;
> -  _6 = reassocmul_9 - _3;
> +  _8 = -_3;
> +  _6 = w_4(D) * 2.0e+0 + _8;
>    *x_2(D) = _6;
>    return;
> 
> @@ -18,18 +18,18 @@
> 
> 
> 
> -;; Function void mirror2(float&, float) (_Z7mirror2Rff, funcdef_no=1,
> decl_uid=2708, cgraph_uid=1, symbol_order=1)
> +;; Function void mirror2(float&, float) (_Z7mirror2Rff, funcdef_no=1,
> decl_uid=2476, cgraph_uid=1, symbol_order=1)
> 
>  void mirror2(float&, float) (float & x, float w)
>  {
> -  float _2;
>    float _5;
>    float _6;
> +  float _8;
> 
>    <bb 2>:
> -  _2 = w_1(D) * 2.0e+0;
>    _5 = *x_4(D);
> -  _6 = _2 - _5;
> +  _8 = -_5;
> +  _6 = w_1(D) * 2.0e+0 + _8;
>    *x_4(D) = _6;
>    return;

But the GIMPLE looks good to me - should use fmsub.

Reply via email to