diff options
author | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-28 21:57:00 +0000 |
---|---|---|
committer | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-28 21:57:00 +0000 |
commit | 2a483856aa19f2c7939becccb4fa0d41f12bd839 (patch) | |
tree | 25e094b4aeaa60e79415de0c4de8c2dd3f5ac6b2 /gcc/sese.c | |
parent | 6e987697fa7ccb6d4f7c957255d849361a29167e (diff) | |
download | gcc-2a483856aa19f2c7939becccb4fa0d41f12bd839.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176900 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sese.c')
-rw-r--r-- | gcc/sese.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/gcc/sese.c b/gcc/sese.c index ec96dfba5cc..10a058120e7 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); } } |