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?
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