diff options
author | Mark Mitchell <mark@codesourcery.com> | 2004-12-27 16:06:13 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2004-12-27 16:06:13 +0000 |
commit | 6ec215790a176bdfe08e58b32b849e9614a332d6 (patch) | |
tree | 9d671cd1af8cf69a49a9111242eeece31b50a39a | |
parent | 27e84b816594bbba40610b1bff9a0c9d3d3ee4f3 (diff) | |
download | gcc-6ec215790a176bdfe08e58b32b849e9614a332d6.zip gcc-6ec215790a176bdfe08e58b32b849e9614a332d6.tar.gz gcc-6ec215790a176bdfe08e58b32b849e9614a332d6.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/gimplify.c | 13 |
2 files changed, 15 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e84e90a..e01e756 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 9bf4c4e..f89b7207 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: |