OSDN Git Service

* expr.c (expand_expr_real_1): Abort on COND_EXPR of
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 6 Dec 2004 00:14:07 +0000 (00:14 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 6 Dec 2004 00:14:07 +0000 (00:14 +0000)
VOID_TYPE.

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

gcc/ChangeLog
gcc/expr.c

index 80f8776..844e6b9 100644 (file)
@@ -1,3 +1,8 @@
+2004-12-05  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * expr.c (expand_expr_real_1): Abort on COND_EXPR of
+       VOID_TYPE.
+
 2004-12-05  Richard Henderson  <rth@redhat.com>
 
        PR target/18841
index 1a43145..b5939ae 100644 (file)
@@ -8063,21 +8063,10 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
       return const0_rtx;
 
     case COND_EXPR:
-      /* If it's void, we don't need to worry about computing a value.  */
-      if (VOID_TYPE_P (TREE_TYPE (exp)))
-       {
-         tree pred = TREE_OPERAND (exp, 0);
-         tree then_ = TREE_OPERAND (exp, 1);
-         tree else_ = TREE_OPERAND (exp, 2);
-
-         gcc_assert (TREE_CODE (then_) == GOTO_EXPR
-                     && TREE_CODE (GOTO_DESTINATION (then_)) == LABEL_DECL
-                     && TREE_CODE (else_) == GOTO_EXPR
-                     && TREE_CODE (GOTO_DESTINATION (else_)) == LABEL_DECL);
-
-         jumpif (pred, label_rtx (GOTO_DESTINATION (then_)));
-         return expand_expr (else_, const0_rtx, VOIDmode, 0);
-       }
+      /* A COND_EXPR with its type being VOID_TYPE represents a
+        conditional jump and is handled in
+        expand_gimple_cond_expr.  */
+      gcc_assert (!VOID_TYPE_P (TREE_TYPE (exp)));
 
         /* Note that COND_EXPRs whose type is a structure or union
         are required to be constructed to contain assignments of