diff options
author | Richard Biener <rguenth@gcc.gnu.org> | 2011-10-06 10:35:20 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-10-06 10:35:20 +0000 |
commit | 2a86de57e16b2d2bb294dd1c07c2cab5ca3f95e2 (patch) | |
tree | c1f39c24e478331f15459fbfa9e8bed4f8f41d72 /gcc/tree-ssa-dom.c | |
parent | 69c2fbf1ec048f4b6e98d87c9eac15a2f3517fae (diff) | |
download | gcc-2a86de57e16b2d2bb294dd1c07c2cab5ca3f95e2.zip gcc-2a86de57e16b2d2bb294dd1c07c2cab5ca3f95e2.tar.gz gcc-2a86de57e16b2d2bb294dd1c07c2cab5ca3f95e2.tar.bz2 |
fold-const.c (fold_ternary_loc): Also fold non-constant vector CONSTRUCTORs.
2011-10-06 Richard Guenther <rguenther@suse.de>
* fold-const.c (fold_ternary_loc): Also fold non-constant
vector CONSTRUCTORs. Make more efficient.
* tree-ssa-dom.c (cprop_operand): Don't handle virtual operands.
(cprop_into_stmt): Don't propagate into virtual operands.
(optimize_stmt): Really dump original statement.
From-SVN: r179598
Diffstat (limited to 'gcc/tree-ssa-dom.c')
-rw-r--r-- | gcc/tree-ssa-dom.c | 30 |
1 files changed, 8 insertions, 22 deletions
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index 3902b5ce..8bfc91a 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -1995,17 +1995,6 @@ cprop_operand (gimple stmt, use_operand_p op_p) val = SSA_NAME_VALUE (op); if (val && val != op) { - /* Do not change the base variable in the virtual operand - tables. That would make it impossible to reconstruct - the renamed virtual operand if we later modify this - statement. Also only allow the new value to be an SSA_NAME - for propagation into virtual operands. */ - if (!is_gimple_reg (op) - && (TREE_CODE (val) != SSA_NAME - || is_gimple_reg (val) - || get_virtual_var (val) != get_virtual_var (op))) - return; - /* Do not replace hard register operands in asm statements. */ if (gimple_code (stmt) == GIMPLE_ASM && !may_propagate_copy_into_asm (op)) @@ -2076,11 +2065,8 @@ cprop_into_stmt (gimple stmt) use_operand_p op_p; ssa_op_iter iter; - FOR_EACH_SSA_USE_OPERAND (op_p, stmt, iter, SSA_OP_ALL_USES) - { - if (TREE_CODE (USE_FROM_PTR (op_p)) == SSA_NAME) - cprop_operand (stmt, op_p); - } + FOR_EACH_SSA_USE_OPERAND (op_p, stmt, iter, SSA_OP_USE) + cprop_operand (stmt, op_p); } /* Optimize the statement pointed to by iterator SI. @@ -2107,18 +2093,18 @@ optimize_stmt (basic_block bb, gimple_stmt_iterator si) old_stmt = stmt = gsi_stmt (si); - if (gimple_code (stmt) == GIMPLE_COND) - canonicalize_comparison (stmt); - - update_stmt_if_modified (stmt); - opt_stats.num_stmts++; - if (dump_file && (dump_flags & TDF_DETAILS)) { fprintf (dump_file, "Optimizing statement "); print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM); } + if (gimple_code (stmt) == GIMPLE_COND) + canonicalize_comparison (stmt); + + update_stmt_if_modified (stmt); + opt_stats.num_stmts++; + /* Const/copy propagate into USES, VUSES and the RHS of VDEFs. */ cprop_into_stmt (stmt); |