tree-vrp.c (remove_range_assertions): Do not update statements unnecessarily.
authorZdenek Dvorak <dvorakz@suse.cz>
Fri, 3 Mar 2006 00:07:54 +0000 (01:07 +0100)
committerZdenek Dvorak <rakdver@gcc.gnu.org>
Fri, 3 Mar 2006 00:07:54 +0000 (00:07 +0000)
* tree-vrp.c (remove_range_assertions): Do not update statements unnecessarily.

From-SVN: r111654

gcc/ChangeLog
gcc/tree-vrp.c

index e9e8a1c959b0cbff198eb4ae1301cc0b3bef8ebc..5c933ac8c43a2b017d4263e3947af104b0254bef 100644 (file)
@@ -1,3 +1,7 @@
+2006-03-02  Zdenek Dvorak <dvorakz@suse.cz>
+
+       * tree-vrp.c (remove_range_assertions): Do not update statements unnecessarily.
+
 2006-03-02  Zdenek Dvorak <dvorakz@suse.cz>
 
        * cse.c (rest_of_handle_cse): Do not pass CLEANUP_PRE_LOOP to cfg
index d8ff9fd37100b22115ff67daf27f26f46e47121b..f6d0a6d0c8e8df55851650614fe34c2d77baae20 100644 (file)
@@ -3198,21 +3198,19 @@ remove_range_assertions (void)
        if (TREE_CODE (stmt) == MODIFY_EXPR
            && TREE_CODE (TREE_OPERAND (stmt, 1)) == ASSERT_EXPR)
          {
-           tree rhs = TREE_OPERAND (stmt, 1);
+           tree rhs = TREE_OPERAND (stmt, 1), var;
            tree cond = fold (ASSERT_EXPR_COND (rhs));
            use_operand_p use_p;
            imm_use_iterator iter;
 
            gcc_assert (cond != boolean_false_node);
-           TREE_OPERAND (stmt, 1) = ASSERT_EXPR_VAR (rhs);
-           update_stmt (stmt);
 
-           /* The statement is now a copy.  Propagate the RHS into
-              every use of the LHS.  */
+           /* Propagate the RHS into every use of the LHS.  */
+           var = ASSERT_EXPR_VAR (rhs);
            FOR_EACH_IMM_USE_SAFE (use_p, iter, TREE_OPERAND (stmt, 0))
              {
-               SET_USE (use_p, ASSERT_EXPR_VAR (rhs));
-               update_stmt (USE_STMT (use_p));
+               SET_USE (use_p, var);
+               gcc_assert (TREE_CODE (var) == SSA_NAME);
              }
 
            /* And finally, remove the copy, it is not needed.  */