From: Jason Merrill Date: Fri, 11 Nov 2005 17:14:49 +0000 (-0500) Subject: re PR c++/24686 (ICE when building a variation of NMSTL) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=df77f454639a450946ea2b7d96dff216b0199c68;p=gcc.git re PR c++/24686 (ICE when building a variation of NMSTL) PR c++/24686 * gimplify.c (gimplify_cleanup_point_expr): Also save and restore the cleanup list. From-SVN: r106786 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c9f0917d50b..7a871c4a26b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-11-11 Jason Merrill + + PR c++/24686 + * gimplify.c (gimplify_cleanup_point_expr): Also save and restore + the cleanup list. + 2005-11-11 Zdenek Dvorak PR rtl-optimization/22509 diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 9e25aef25c2..b232112bea3 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -3810,14 +3810,18 @@ gimplify_cleanup_point_expr (tree *expr_p, tree *pre_p) tree temp = voidify_wrapper_expr (*expr_p, NULL); /* We only care about the number of conditions between the innermost - CLEANUP_POINT_EXPR and the cleanup. So save and reset the count. */ + CLEANUP_POINT_EXPR and the cleanup. So save and reset the count and + any cleanups collected outside the CLEANUP_POINT_EXPR. */ int old_conds = gimplify_ctxp->conditions; + tree old_cleanups = gimplify_ctxp->conditional_cleanups; gimplify_ctxp->conditions = 0; + gimplify_ctxp->conditional_cleanups = NULL_TREE; body = TREE_OPERAND (*expr_p, 0); gimplify_to_stmt_list (&body); gimplify_ctxp->conditions = old_conds; + gimplify_ctxp->conditional_cleanups = old_cleanups; for (iter = tsi_start (body); !tsi_end_p (iter); ) {