From 6ec215790a176bdfe08e58b32b849e9614a332d6 Mon Sep 17 00:00:00 2001 From: Mark Mitchell <mark@codesourcery.com> Date: Mon, 27 Dec 2004 16:06:13 +0000 Subject: [PATCH] re PR c++/19148 (ICE: gimplification failed) 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 | 7 +++++++ gcc/gimplify.c | 13 ++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e84e90aeeaa1..e01e7562c44d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 9bf4c4ec6a98..f89b7207c148 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -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: -- GitLab