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.
Regstrapping on amd64-linux. 2011-07-27 Sebastian Pop <sebastian....@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. --- gcc/ChangeLog | 7 +++++++ gcc/sese.c | 18 ++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b07d494..a565c18 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2011-07-27 Sebastian Pop <sebastian....@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. + +2011-07-27 Sebastian Pop <sebastian....@amd.com> + PR tree-optimization/49471 * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Build an unsigned iv only when the largest type is unsigned. Do not call diff --git a/gcc/sese.c b/gcc/sese.c index ec96dfb..04a8e75 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 = integer_zero_node; } - - 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 = integer_zero_node; } + 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); } } -- 1.7.4.1