aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2010-04-19 19:58:54 +0200
committerMartin Jambor <jamborm@gcc.gnu.org>2010-04-19 19:58:54 +0200
commitacd638015562cb10a9b70ba5acd0109aeba2f40b (patch)
treea7cf57666657ce42c8a78e8d5215cec965e97085 /gcc/gimplify.c
parent0b6e2868bd587540b38e2122876cbe32f1a2a35e (diff)
downloadgcc-acd638015562cb10a9b70ba5acd0109aeba2f40b.zip
gcc-acd638015562cb10a9b70ba5acd0109aeba2f40b.tar.gz
gcc-acd638015562cb10a9b70ba5acd0109aeba2f40b.tar.bz2
gimple.h (create_tmp_reg): Declare.
2010-04-19 Martin Jambor <mjambor@suse.cz> * gimple.h (create_tmp_reg): Declare. * gimplify.c (create_tmp_reg): New function. (gimplify_return_expr): Use create_tmp_reg. (gimplify_omp_atomic): Likewise. (gimple_regimplify_operands): Likewise. * tree-dfa.c (make_rename_temp): Likewise. * tree-predcom.c (predcom_tmp_var): Likewise. (reassociate_to_the_same_stmt): Likewise. * tree-sra.c (replace_uses_with_default_def_ssa_name): Likewise. (get_replaced_param_substitute): Likewise. * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise. * tree-ssa-phiopt.c (cond_store_replacement): Likewise. * tree-ssa-pre.c (get_representative_for): Likewise. (create_expression_by_pieces): Likewise. * tree-tailcall.c (adjust_return_value_with_ops): Likewise. (create_tailcall_accumulator): Likewise. From-SVN: r158523
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c31
1 files changed, 20 insertions, 11 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index a9eed84..287d621 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -508,6 +508,23 @@ create_tmp_var (tree type, const char *prefix)
return tmp_var;
}
+/* Create a new temporary variable declaration of type TYPE by calling
+ create_tmp_var and if TYPE is a vector or a complex number, mark the new
+ temporary as gimple register. */
+
+tree
+create_tmp_reg (tree type, const char *prefix)
+{
+ tree tmp;
+
+ tmp = create_tmp_var (type, prefix);
+ if (TREE_CODE (type) == COMPLEX_TYPE
+ || TREE_CODE (type) == VECTOR_TYPE)
+ DECL_GIMPLE_REG_P (tmp) = 1;
+
+ return tmp;
+}
+
/* Create a temporary with a name derived from VAL. Subroutine of
lookup_tmp_var; nobody else should call this function. */
@@ -1219,10 +1236,7 @@ gimplify_return_expr (tree stmt, gimple_seq *pre_p)
result = gimplify_ctxp->return_temp;
else
{
- result = create_tmp_var (TREE_TYPE (result_decl), NULL);
- if (TREE_CODE (TREE_TYPE (result)) == COMPLEX_TYPE
- || TREE_CODE (TREE_TYPE (result)) == VECTOR_TYPE)
- DECL_GIMPLE_REG_P (result) = 1;
+ result = create_tmp_reg (TREE_TYPE (result_decl), NULL);
/* ??? With complex control flow (usually involving abnormal edges),
we can wind up warning about an uninitialized value for this. Due
@@ -6351,9 +6365,7 @@ gimplify_omp_atomic (tree *expr_p, gimple_seq *pre_p)
tree type = TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (addr)));
tree tmp_load;
- tmp_load = create_tmp_var (type, NULL);
- if (TREE_CODE (type) == COMPLEX_TYPE || TREE_CODE (type) == VECTOR_TYPE)
- DECL_GIMPLE_REG_P (tmp_load) = 1;
+ tmp_load = create_tmp_reg (type, NULL);
if (goa_stabilize_expr (&rhs, pre_p, addr, tmp_load) < 0)
return GS_ERROR;
@@ -7828,11 +7840,8 @@ gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
}
if (need_temp)
{
- tree temp = create_tmp_var (TREE_TYPE (lhs), NULL);
+ tree temp = create_tmp_reg (TREE_TYPE (lhs), NULL);
- if (TREE_CODE (TREE_TYPE (lhs)) == COMPLEX_TYPE
- || TREE_CODE (TREE_TYPE (lhs)) == VECTOR_TYPE)
- DECL_GIMPLE_REG_P (temp) = 1;
if (TREE_CODE (orig_lhs) == SSA_NAME)
orig_lhs = SSA_NAME_VAR (orig_lhs);