This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH v3] Optimize strchr to strlen


OK.

On Wed, Sep 28, 2016 at 11:43 AM, Wilco Dijkstra <Wilco.Dijkstra@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  <wdijkstr@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);
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]