On Thu, Apr 25, 2013 at 05:24:48PM +0200, Marek Polacek wrote:
> On Thu, Apr 25, 2013 at 05:16:31PM +0200, Marek Polacek wrote:
> > Okay, patch updated.  Ok now (which branches, all active?)?
> > Regtested/bootstrapped again on x86_64-linux.
> 
> Eh, I've found a bug in previous version (not properly adjusted
> testcase).  So this one should be ok.
> 
> 2013-04-25  Marek Polacek  <pola...@redhat.com>
>  
>         * builtins.c (fold_builtin_logb): Return +Inf for -Inf.
>  
>         * gcc.dg/torture/builtin-logb-1.c: Adjust testcase.
> 
> --- gcc/builtins.c.mp 2013-04-25 12:52:37.463451032 +0200
> +++ gcc/builtins.c    2013-04-25 16:29:59.054615841 +0200
> @@ -9698,7 +9698,16 @@ fold_builtin_logb (location_t loc, tree
>        case rvc_inf:
>       /* If arg is Inf or NaN and we're logb, return it.  */
>       if (TREE_CODE (rettype) == REAL_TYPE)
> -       return fold_convert_loc (loc, rettype, arg);
> +       {
> +         /* For logb(-Inf) we have to return +Inf.  */
> +         if (value->cl == rvc_inf && !tree_expr_nonnegative_p (arg))

Why not
        if (value->cl == rvc_inf && value->sign)
or
        if (real_isinf (value) && real_isneg (value))
instead?

        Jakub

Reply via email to