Fix PR49876: Continue code generation with integer_zero_node on gloog_error
authorSebastian Pop <sebastian.pop@amd.com>
Thu, 28 Jul 2011 21:57:00 +0000 (21:57 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Thu, 28 Jul 2011 21:57:00 +0000 (21:57 +0000)
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

gcc/ChangeLog
gcc/sese.c

index bda5cc2b00915448cd02ea51c3413dd0ad774d47..cc9ea358476cadba06d0bedaf52e6c6201cccb4e 100644 (file)
@@ -1,3 +1,10 @@
+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.
+
 2011-07-28  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/49846
index ec96dfba5ccef7944404e774dc7b492df02e3399..10a058120e7b3402ac3db0a9f144405bff23b6ee 100644 (file)
@@ -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);
     }
 }