aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-dfa.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2004-09-23 23:01:02 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2004-09-23 23:01:02 +0200
commitb28b16008e1771360fa4419827ce110159e3949a (patch)
tree934984b43a2628bfed60b4ccba666f1871a90be4 /gcc/tree-dfa.c
parent512baaea75c050149b35fc3bd1c0cc8ed546f53a (diff)
downloadgcc-b28b16008e1771360fa4419827ce110159e3949a.zip
gcc-b28b16008e1771360fa4419827ce110159e3949a.tar.gz
gcc-b28b16008e1771360fa4419827ce110159e3949a.tar.bz2
tree-flow.h (find_new_referenced_vars): Add prototype.
2004-09-23 Diego Novillo <dnovillo@redhat.com> Jakub Jelinek <jakub@redhat.com> * tree-flow.h (find_new_referenced_vars): Add prototype. * tree-sra.c (find_new_referenced_vars_1, find_new_referenced_vars): Move to... * tree-dfa.c (find_new_referenced_vars_1, find_new_referenced_vars): ... here. (mark_new_vars_to_rename): Walk through all operands. * tree-ssa-ccp.c (convert_to_gimple_builtin): New function. (execute_fold_all_builtins): Use it. (pass_fold_builtins): Add TODO_rename_vars to todo_flags_finish. * gcc.c-torture/execute/builtins/strcpy-2.c: New test. * gcc.c-torture/execute/builtins/strcpy-2-lib.c: New. From-SVN: r87983
Diffstat (limited to 'gcc/tree-dfa.c')
-rw-r--r--gcc/tree-dfa.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c
index 9db0cbb..679ffef 100644
--- a/gcc/tree-dfa.c
+++ b/gcc/tree-dfa.c
@@ -981,9 +981,7 @@ mark_new_vars_to_rename (tree stmt, bitmap vars_to_rename)
v_may_defs_after = NUM_V_MAY_DEFS (STMT_V_MAY_DEF_OPS (stmt));
v_must_defs_after = NUM_V_MUST_DEFS (STMT_V_MUST_DEF_OPS (stmt));
- FOR_EACH_SSA_TREE_OPERAND (val, stmt, iter,
- SSA_OP_VMAYDEF | SSA_OP_VUSE | SSA_OP_VMUSTDEF)
-
+ FOR_EACH_SSA_TREE_OPERAND (val, stmt, iter, SSA_OP_ALL_OPERANDS)
{
if (DECL_P (val))
{
@@ -1004,3 +1002,27 @@ mark_new_vars_to_rename (tree stmt, bitmap vars_to_rename)
BITMAP_XFREE (vars_in_vops_to_rename);
}
+
+/* Find all variables within the gimplified statement that were not previously
+ visible to the function and add them to the referenced variables list. */
+
+static tree
+find_new_referenced_vars_1 (tree *tp, int *walk_subtrees,
+ void *data ATTRIBUTE_UNUSED)
+{
+ tree t = *tp;
+
+ if (TREE_CODE (t) == VAR_DECL && !var_ann (t))
+ add_referenced_tmp_var (t);
+
+ if (IS_TYPE_OR_DECL_P (t))
+ *walk_subtrees = 0;
+
+ return NULL;
+}
+
+void
+find_new_referenced_vars (tree *stmt_p)
+{
+ walk_tree (stmt_p, find_new_referenced_vars_1, NULL, NULL);
+}