2002-11-05 Andrew Haley <aph@redhat.com>
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Nov 2002 14:32:24 +0000 (14:32 +0000)
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Nov 2002 14:32:24 +0000 (14:32 +0000)
        * fold-const.c (fold): Don't transform (a0 op compound(a1,a2))
        to (compound(a1,a0 op a2)) if a0 or a1 have side effects.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58822 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/fold-const.c

index ff854be..31010ab 100644 (file)
@@ -1,3 +1,8 @@
+2002-11-05  Andrew Haley  <aph@redhat.com>
+
+       * fold-const.c (fold): Don't transform (a0 op compound(a1,a2))
+       to (compound(a1,a0 op a2)) if a0 or a1 have side effects.
+
 2002-11-05  Richard Sandiford  <rsandifo@redhat.com>
 
        * config/mips/mips.h (CANNOT_CHANGE_MODE_CLASS): Move comment to...
index c08d44e..c4095e4 100644 (file)
@@ -4783,7 +4783,9 @@ fold (expr)
   else if (TREE_CODE_CLASS (code) == '2'
           || TREE_CODE_CLASS (code) == '<')
     {
-      if (TREE_CODE (arg1) == COMPOUND_EXPR)
+      if (TREE_CODE (arg1) == COMPOUND_EXPR
+         && ! TREE_SIDE_EFFECTS (TREE_OPERAND (arg1, 0))
+         && ! TREE_SIDE_EFFECTS (arg0))
        return build (COMPOUND_EXPR, type, TREE_OPERAND (arg1, 0),
                      fold (build (code, type,
                                   arg0, TREE_OPERAND (arg1, 1))));