OSDN Git Service

(expand_expr, case COND_EXPR): Protect the condition from being evaluated more
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Jun 1995 22:57:58 +0000 (22:57 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Jun 1995 22:57:58 +0000 (22:57 +0000)
than once.
(do_jump, case TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR): Likewise.

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

gcc/expr.c

index d2727cd..a7c6702 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),