OSDN Git Service

* tree-vrp.c (remove_range_assertions): Do not update statements unnecessarily.
authorrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 Mar 2006 00:07:54 +0000 (00:07 +0000)
committerrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 Mar 2006 00:07:54 +0000 (00:07 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111654 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-vrp.c

index e9e8a1c..5c933ac 100644 (file)
@@ -1,5 +1,9 @@
 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
        cleanup.
        * gcse.c (rest_of_handle_gcse): Ditto.
index d8ff9fd..f6d0a6d 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.  */