aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2007-01-27 23:31:19 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2007-01-27 22:31:19 +0000
commit7fbb9a499c94f945e4c495e431aa16ad0ff47e8d (patch)
tree158356eefd36a57b644f59ad76730c4302b52876
parent4838bfc05bf7b35b1e07a57a0878df308655d6d8 (diff)
downloadgcc-7fbb9a499c94f945e4c495e431aa16ad0ff47e8d.zip
gcc-7fbb9a499c94f945e4c495e431aa16ad0ff47e8d.tar.gz
gcc-7fbb9a499c94f945e4c495e431aa16ad0ff47e8d.tar.bz2
tree-sra.c (sra_walk_function): Don't rely on aliases being build.
* tree-sra.c (sra_walk_function): Don't rely on aliases being build. (pass_sra): Do not require alias information. * passes.c (init_optimization_passes): Add SRA From-SVN: r121240
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/passes.c1
-rw-r--r--gcc/tree-sra.c11
3 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 99fcc33..c8befd2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-01-27 Jan Hubicka <jh@suse.cz>
+
+ * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
+ (pass_sra): Do not require alias information.
+ * passes.c (init_optimization_passes): Add SRA
+
2007-01-27 Steven Bosscher <steven@gcc.gnu.org>
* tracer.c (rest_of_handle_tracer): We already cleaned
diff --git a/gcc/passes.c b/gcc/passes.c
index 5333bea..f1a702e 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -496,6 +496,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_ccp);
NEXT_PASS (pass_forwprop);
+ NEXT_PASS (pass_sra);
NEXT_PASS (pass_copy_prop);
NEXT_PASS (pass_merge_phi);
NEXT_PASS (pass_dce);
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index da338fc..a2d28ca 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -973,8 +973,9 @@ sra_walk_function (const struct sra_walk_fns *fns)
/* If the statement has no virtual operands, then it doesn't
make any structure references that we care about. */
- if (ZERO_SSA_OPERANDS (stmt, (SSA_OP_VIRTUAL_DEFS | SSA_OP_VUSE)))
- continue;
+ if (gimple_aliases_computed_p (cfun)
+ && ZERO_SSA_OPERANDS (stmt, (SSA_OP_VIRTUAL_DEFS | SSA_OP_VUSE)))
+ continue;
switch (TREE_CODE (stmt))
{
@@ -989,7 +990,9 @@ sra_walk_function (const struct sra_walk_fns *fns)
as a USE of the variable on the RHS of this assignment. */
t = TREE_OPERAND (stmt, 0);
- if (TREE_CODE (t) == GIMPLE_MODIFY_STMT)
+ if (t == NULL_TREE)
+ ;
+ else if (TREE_CODE (t) == GIMPLE_MODIFY_STMT)
sra_walk_expr (&GIMPLE_STMT_OPERAND (t, 1), &si, false, fns);
else
sra_walk_expr (&TREE_OPERAND (stmt, 0), &si, false, fns);
@@ -2374,7 +2377,7 @@ struct tree_opt_pass pass_sra =
NULL, /* next */
0, /* static_pass_number */
TV_TREE_SRA, /* tv_id */
- PROP_cfg | PROP_ssa | PROP_alias, /* properties_required */
+ PROP_cfg | PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */