re PR c++/19148 (ICE: gimplification failed)
authorMark Mitchell <mark@codesourcery.com>
Mon, 27 Dec 2004 16:06:13 +0000 (16:06 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Mon, 27 Dec 2004 16:06:13 +0000 (16:06 +0000)
PR c++/19148
* gimplify.c (gimplify_cond_expr): Add post_p parameter.
(gimplify_modify_expr_rhs): Adjust call to gimplify_cond_expr.
(gimplify_expr): Likewise.

From-SVN: r92640

gcc/ChangeLog
gcc/gimplify.c

index e84e90aeeaa1e219ee2c186fc34467c61ed83387..e01e7562c44dfe3fca5364370683f5815818faea 100644 (file)
@@ -1,3 +1,10 @@
+2004-12-27  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/19148
+       * gimplify.c (gimplify_cond_expr): Add post_p parameter.
+       (gimplify_modify_expr_rhs): Adjust call to gimplify_cond_expr.
+       (gimplify_expr): Likewise.
+
 2004-12-27  Richard Henderson  <rth@redhat.com>
 
        * config/i386/i386.h (UNITS_PER_SIMD_WORD): Don't use MMX/3DNOW.
index 9bf4c4ec6a9809653ed0e7973a9fc407d70a4d91..f89b7207c14836ff69d4e7757ec81e12fd4b8ad3 100644 (file)
@@ -2093,10 +2093,13 @@ gimple_boolify (tree expr)
     TARGET is the tree for T1 above.
 
     PRE_P points to the list where side effects that must happen before
-       *EXPR_P should be stored.  */
+       *EXPR_P should be stored.
+
+   POST_P points to the list where side effects that must happen after
+     *EXPR_P should be stored.  */
 
 static enum gimplify_status
-gimplify_cond_expr (tree *expr_p, tree *pre_p, tree target)
+gimplify_cond_expr (tree *expr_p, tree *pre_p, tree *post_p, tree target)
 {
   tree expr = *expr_p;
   tree tmp, tmp2, type;
@@ -2112,7 +2115,7 @@ gimplify_cond_expr (tree *expr_p, tree *pre_p, tree target)
     {
       if (target)
        {
-         ret = gimplify_expr (&target, pre_p, NULL,
+         ret = gimplify_expr (&target, pre_p, post_p,
                               is_gimple_min_lval, fb_lvalue);
          if (ret != GS_ERROR)
            ret = GS_OK;
@@ -2873,7 +2876,7 @@ gimplify_modify_expr_rhs (tree *expr_p, tree *from_p, tree *to_p, tree *pre_p,
        if (!is_gimple_reg_type (TREE_TYPE (*from_p)))
          {
            *expr_p = *from_p;
-           return gimplify_cond_expr (expr_p, pre_p, *to_p);
+           return gimplify_cond_expr (expr_p, pre_p, post_p, *to_p);
          }
        else
          ret = GS_UNHANDLED;
@@ -3691,7 +3694,7 @@ gimplify_expr (tree *expr_p, tree *pre_p, tree *post_p,
          break;
 
        case COND_EXPR:
-         ret = gimplify_cond_expr (expr_p, pre_p, NULL_TREE);
+         ret = gimplify_cond_expr (expr_p, pre_p, post_p, NULL_TREE);
          break;
 
        case CALL_EXPR: