(fold): Don't make COND_EXPR when both expr and one part are comparisons.
authorRichard Kenner <kenner@gcc.gnu.org>
Mon, 27 Jan 1997 14:05:06 +0000 (09:05 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Mon, 27 Jan 1997 14:05:06 +0000 (09:05 -0500)
From-SVN: r13553

gcc/fold-const.c

index dedbeed..e76d6b9 100644 (file)
@@ -3756,7 +3756,8 @@ fold (expr)
                      fold (build (code, type,
                                   arg0, TREE_OPERAND (arg1, 1))));
       else if (TREE_CODE (arg1) == COND_EXPR
-              || TREE_CODE_CLASS (TREE_CODE (arg1)) == '<')
+              || (TREE_CODE_CLASS (TREE_CODE (arg1)) == '<'
+                  && TREE_CODE_CLASS (code) != '<'))
        {
          tree test, true_value, false_value;
 
@@ -3812,7 +3813,8 @@ fold (expr)
        return build (COMPOUND_EXPR, type, TREE_OPERAND (arg0, 0),
                      fold (build (code, type, TREE_OPERAND (arg0, 1), arg1)));
       else if (TREE_CODE (arg0) == COND_EXPR
-              || TREE_CODE_CLASS (TREE_CODE (arg0)) == '<')
+              || (TREE_CODE_CLASS (TREE_CODE (arg0)) == '<'
+                  && TREE_CODE_CLASS (code) != '<'))
        {
          tree test, true_value, false_value;