]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Revert this change. Gavin's patch to operand_equal_p is a better fix.
authorJeffrey A Law <law@cygnus.com>
Tue, 19 Oct 1999 08:40:05 +0000 (08:40 +0000)
committerJeff Law <law@gcc.gnu.org>
Tue, 19 Oct 1999 08:40:05 +0000 (02:40 -0600)
        * fold-const.c (fold_range_test): Do not try to fold the range
        test if the rhs or lhs has side effects.

        Fri Sep 17 15:05:27 1999  Gavin Romig-Koch  <gavin@cygnus.com>
        * fold-const.c (operand_equal_p): Pay attention to side effects.

From-SVN: r30082

gcc/ChangeLog
gcc/fold-const.c

index 59c2ada88ae6e8bdddd04377dda00802b0eb6ed8..587dbbca168a61d4d6328d8d5613c706babe80d4 100644 (file)
@@ -1,5 +1,12 @@
 Tue Oct 19 02:03:00 1999  Jeffrey A Law  (law@cygnus.com)
 
+       Revert this change.  Gavin's patch to operand_equal_p is a better fix.
+       * fold-const.c (fold_range_test): Do not try to fold the range
+       test if the rhs or lhs has side effects.
+
+       Fri Sep 17 15:05:27 1999  Gavin Romig-Koch  <gavin@cygnus.com>
+       * fold-const.c (operand_equal_p): Pay attention to side effects.
+
        * reg-stack.c (stack_result): Aggregates are not returned in
        stack registers.
 
index c9778ba351df651887592d5982d44ec1e7894994..55dcf9bf1cf34d8f6726c8072a4714cb8eff1d1e 100644 (file)
@@ -2177,6 +2177,12 @@ operand_equal_p (arg0, arg1, only_const)
                                  TREE_OPERAND (arg1, 0), 0));
 
     case 'r':
+      /* If either of the pointer (or reference) expressions we are dereferencing
+        contain a side effect, these cannot be equal. */
+      if (TREE_SIDE_EFFECTS (arg0)
+         || TREE_SIDE_EFFECTS (arg1))
+       return 0;
+
       switch (TREE_CODE (arg0))
        {
        case INDIRECT_REF:
@@ -3558,10 +3564,6 @@ fold_range_test (exp)
   tree rhs = make_range (TREE_OPERAND (exp, 1), &in1_p, &low1, &high1);
   tree tem;
 
-  /* Fail if anything is volatile.  */
-  if (TREE_SIDE_EFFECTS (lhs) || TREE_SIDE_EFFECTS (rhs))
-    return 0;
-
   /* If this is an OR operation, invert both sides; we will invert
      again at the end.  */
   if (or_op)