aboutsummaryrefslogtreecommitdiff
path: root/gcc/sese.c
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2011-07-28 21:57:00 +0000
committerSebastian Pop <spop@gcc.gnu.org>2011-07-28 21:57:00 +0000
commit60cf26cce26d2e1183c65775e5793fe1ef22a723 (patch)
tree25e094b4aeaa60e79415de0c4de8c2dd3f5ac6b2 /gcc/sese.c
parentf715f0c186c369103dc28a7fb96c20ccd53cc559 (diff)
downloadgcc-60cf26cce26d2e1183c65775e5793fe1ef22a723.zip
gcc-60cf26cce26d2e1183c65775e5793fe1ef22a723.tar.gz
gcc-60cf26cce26d2e1183c65775e5793fe1ef22a723.tar.bz2
Fix PR49876: Continue code generation with integer_zero_node on gloog_error
When setting gloog_error, graphite should continue code generation without early returns, as otherwise the SSA representation would not be complete. So set the new expression to integer_zero_node, that would not require more SSA updates, and continue code generation as nothing happened. Regstrapped on amd64-linux. 2011-07-28 Sebastian Pop <sebastian.pop@amd.com> PR tree-optimization/49876 * sese.c (rename_uses): Do not return false on gloog_error: set the new_expr to integer_zero_node and continue code generation. (graphite_copy_stmts_from_block): Remove early exit on gloog_error. From-SVN: r176900
Diffstat (limited to 'gcc/sese.c')
-rw-r--r--gcc/sese.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/gcc/sese.c b/gcc/sese.c
index ec96dfb..10a0581 100644
--- a/gcc/sese.c
+++ b/gcc/sese.c
@@ -527,10 +527,10 @@ rename_uses (gimple copy, htab_t rename_map, gimple_stmt_iterator *gsi_tgt,
if (chrec_contains_undetermined (scev))
{
*gloog_error = true;
- return false;
+ new_expr = build_zero_cst (TREE_TYPE (old_name));
}
-
- new_expr = chrec_apply_map (scev, iv_map);
+ else
+ new_expr = chrec_apply_map (scev, iv_map);
/* The apply should produce an expression tree containing
the uses of the new induction variables. We should be
@@ -540,12 +540,13 @@ rename_uses (gimple copy, htab_t rename_map, gimple_stmt_iterator *gsi_tgt,
|| tree_contains_chrecs (new_expr, NULL))
{
*gloog_error = true;
- return false;
+ new_expr = build_zero_cst (TREE_TYPE (old_name));
}
+ else
+ /* Replace the old_name with the new_expr. */
+ new_expr = force_gimple_operand (unshare_expr (new_expr), &stmts,
+ true, NULL_TREE);
- /* Replace the old_name with the new_expr. */
- new_expr = force_gimple_operand (unshare_expr (new_expr), &stmts,
- true, NULL_TREE);
gsi_insert_seq_before (gsi_tgt, stmts, GSI_SAME_STMT);
replace_exp (use_p, new_expr);
@@ -621,9 +622,6 @@ graphite_copy_stmts_from_block (basic_block bb, basic_block new_bb,
gloog_error))
fold_stmt_inplace (copy);
- if (*gloog_error)
- break;
-
update_stmt (copy);
}
}