On Mon, Oct 14, 2019 at 10:25 PM Jason Merrill <ja...@redhat.com> wrote:
>
> The comment for get_formal_tmp_var says that it shouldn't be used for
> expressions whose value might change between initialization and use, and in
> this case we're creating a temporary precisely because the value might
> change, so we should use get_initialized_tmp_var instead.
>
> I also noticed that many callers of get_initialized_tmp_var pass NULL for
> post_p, so it seems appropriate to make it a default argument.  OK for trunk?

OK.

> Tested x86_64-pc-linux-gnu.
>
> gcc/cp/
>         * cp-gimplify.c (cp_gimplify_expr): Use get_initialized_tmp_var.
> gcc/
>         * gimplify.h (get_initialized_tmp_var): Add default argument to
>         post_p.
> ---
>  gcc/gimplify.h       | 2 +-
>  gcc/cp/cp-gimplify.c | 2 +-
>  gcc/gimplify.c       | 5 +++--
>  3 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/gcc/gimplify.h b/gcc/gimplify.h
> index 1070006374a..6c997a769cd 100644
> --- a/gcc/gimplify.h
> +++ b/gcc/gimplify.h
> @@ -57,7 +57,7 @@ extern gbind *gimple_current_bind_expr (void);
>  extern vec<gbind *> gimple_bind_expr_stack (void);
>  extern void gimplify_and_add (tree, gimple_seq *);
>  extern tree get_formal_tmp_var (tree, gimple_seq *);
> -extern tree get_initialized_tmp_var (tree, gimple_seq *, gimple_seq *,
> +extern tree get_initialized_tmp_var (tree, gimple_seq *, gimple_seq * = NULL,
>                                      bool = true);
>  extern void declare_vars (tree, gimple *, bool);
>  extern void gimple_add_tmp_var (tree);
> diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
> index 154fa70ec06..80754b930b9 100644
> --- a/gcc/cp/cp-gimplify.c
> +++ b/gcc/cp/cp-gimplify.c
> @@ -767,7 +767,7 @@ cp_gimplify_expr (tree *expr_p, gimple_seq *pre_p, 
> gimple_seq *post_p)
>                 && (TREE_CODE (op1) == CALL_EXPR
>                     || (SCALAR_TYPE_P (TREE_TYPE (op1))
>                         && !TREE_CONSTANT (op1))))
> -        TREE_OPERAND (*expr_p, 1) = get_formal_tmp_var (op1, pre_p);
> +        TREE_OPERAND (*expr_p, 1) = get_initialized_tmp_var (op1, pre_p);
>        }
>        ret = GS_OK;
>        break;
> diff --git a/gcc/gimplify.c b/gcc/gimplify.c
> index 836706961f3..7f9100ba97d 100644
> --- a/gcc/gimplify.c
> +++ b/gcc/gimplify.c
> @@ -661,8 +661,9 @@ get_formal_tmp_var (tree val, gimple_seq *pre_p)
>     are as in gimplify_expr.  */
>
>  tree
> -get_initialized_tmp_var (tree val, gimple_seq *pre_p, gimple_seq *post_p,
> -                        bool allow_ssa)
> +get_initialized_tmp_var (tree val, gimple_seq *pre_p,
> +                        gimple_seq *post_p /* = NULL */,
> +                        bool allow_ssa /* = true */)
>  {
>    return internal_get_tmp_var (val, pre_p, post_p, false, allow_ssa);
>  }
>
> base-commit: aa45db50a034b266c338b55dee1b412178ea84a7
> --
> 2.18.1
>

Reply via email to