OK.

On Wed, Sep 28, 2016 at 11:43 AM, Wilco Dijkstra <wilco.dijks...@arm.com> wrote:
> Jason Merrill wrote:
>> I think this broke g++.dg/ext/builtin10.C.
>
> That's odd. It appears if you add a fold in gimple-fold.c, it no longer calls 
> the
> folding code in builtins.c. No idea what the idea behind that is (especially 
> since
> there are other builtins that appear in both files), but this simple patch 
> fixes it:
>
> If strchr can't be folded in gimple-fold.c, break so folding code in 
> builtins.c is
> also called.
>
> OK for commit?
>
> 2016-09-28  Wilco Dijkstra  <wdijk...@arm.com>
>
>         * gimple-fold.c (gimple_fold_builtin): After failing to fold
>         strchr, also try the generic folding.
> --
> diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
> index 
> ddf4cf0ae68ef6708377fdb1a2b45575d90da799..b6802e81fd1a7fd0b309cb9aa0f984f7bacb6596
>  100644
> --- a/gcc/gimple-fold.c
> +++ b/gcc/gimple-fold.c
> @@ -2948,7 +2948,10 @@ gimple_fold_builtin (gimple_stmt_iterator *gsi)
>      case BUILT_IN_STRNCAT:
>        return gimple_fold_builtin_strncat (gsi);
>      case BUILT_IN_STRCHR:
> -      return gimple_fold_builtin_strchr (gsi);
> +      if (gimple_fold_builtin_strchr (gsi))
> +       return true;
> +      /* Perform additional folding in builtin.c.  */
> +      break;
>      case BUILT_IN_FPUTS:
>        return gimple_fold_builtin_fputs (gsi, gimple_call_arg (stmt, 0),
>                                         gimple_call_arg (stmt, 1), false);
>

Reply via email to