(expand_expr, case COND_EXPR): Protect the condition from being evaluated more than...
authorRichard Kenner <kenner@gcc.gnu.org>
Mon, 26 Jun 1995 22:57:58 +0000 (18:57 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Mon, 26 Jun 1995 22:57:58 +0000 (18:57 -0400)
(expand_expr, case COND_EXPR): Protect the condition from being evaluated more
than once.
(do_jump, case TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR): Likewise.

From-SVN: r10055

gcc/expr.c

index d2727cd49b14deb850cbd9a3c5df73771b6066fd..a7c6702cb18e97cfc60f2ed206617b76674f980a 100644 (file)
@@ -6013,6 +6013,7 @@ expand_expr (exp, target, tmode, modifier)
            TREE_TYPE (cond) = integer_type_node;
            RTL_EXPR_RTL (cond) = flag;
            RTL_EXPR_SEQUENCE (cond) = NULL_RTX;
+           cond = save_expr (cond);
 
            if (! left_cleanups)
              left_cleanups = integer_zero_node;
@@ -8950,6 +8951,7 @@ do_jump (exp, if_false_label, if_true_label)
            TREE_TYPE (cond) = integer_type_node;
            RTL_EXPR_RTL (cond) = flag;
            RTL_EXPR_SEQUENCE (cond) = NULL_RTX;
+           cond = save_expr (cond);
 
            new_cleanups = build (COND_EXPR, void_type_node,
                                  truthvalue_conversion (cond),
@@ -9007,6 +9009,7 @@ do_jump (exp, if_false_label, if_true_label)
            TREE_TYPE (cond) = integer_type_node;
            RTL_EXPR_RTL (cond) = flag;
            RTL_EXPR_SEQUENCE (cond) = NULL_RTX;
+           cond = save_expr (cond);
 
            new_cleanups = build (COND_EXPR, void_type_node,
                                  truthvalue_conversion (cond),