diff options
Diffstat (limited to 'gcc/gimple-expr.c')
-rw-r--r-- | gcc/gimple-expr.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/gcc/gimple-expr.c b/gcc/gimple-expr.c index 44a0b87..45871ac 100644 --- a/gcc/gimple-expr.c +++ b/gcc/gimple-expr.c @@ -373,7 +373,7 @@ copy_var_decl (tree var, tree name, tree type) TREE_ADDRESSABLE (copy) = TREE_ADDRESSABLE (var); TREE_THIS_VOLATILE (copy) = TREE_THIS_VOLATILE (var); - DECL_GIMPLE_REG_P (copy) = DECL_GIMPLE_REG_P (var); + DECL_NOT_GIMPLE_REG_P (copy) = DECL_NOT_GIMPLE_REG_P (var); DECL_ARTIFICIAL (copy) = DECL_ARTIFICIAL (var); DECL_IGNORED_P (copy) = DECL_IGNORED_P (var); DECL_CONTEXT (copy) = DECL_CONTEXT (var); @@ -493,14 +493,7 @@ create_tmp_var (tree type, const char *prefix) 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; + return create_tmp_var (type, prefix); } /* Create a new temporary variable declaration of type TYPE by calling @@ -514,9 +507,6 @@ create_tmp_reg_fn (struct function *fn, tree type, const char *prefix) tmp = create_tmp_var_raw (type, prefix); gimple_add_tmp_var_fn (fn, tmp); - if (TREE_CODE (type) == COMPLEX_TYPE - || TREE_CODE (type) == VECTOR_TYPE) - DECL_GIMPLE_REG_P (tmp) = 1; return tmp; } @@ -792,13 +782,9 @@ is_gimple_reg (tree t) if (TREE_CODE (t) == VAR_DECL && DECL_HARD_REGISTER (t)) return false; - /* Complex and vector values must have been put into SSA-like form. - That is, no assignments to the individual components. */ - if (TREE_CODE (TREE_TYPE (t)) == COMPLEX_TYPE - || TREE_CODE (TREE_TYPE (t)) == VECTOR_TYPE) - return DECL_GIMPLE_REG_P (t); - - return true; + /* Variables can be marked as having partial definitions, avoid + putting them into SSA form. */ + return !DECL_NOT_GIMPLE_REG_P (t); } |