------- Comment #16 from hjl dot tools at gmail dot com 2009-07-24 20:06 ------- (In reply to comment #14) > Index: cp/cp-gimplify.c > =================================================================== > --- cp/cp-gimplify.c (revision 150041) > +++ cp/cp-gimplify.c (working copy) > @@ -804,10 +804,14 @@ cp_genericize_r (tree *stmt_p, int *walk > } > } > > - else if (TREE_CODE (stmt) == BIND_EXPR) > + else if (TREE_CODE (stmt) == BIND_EXPR > + /* We walk this twice, once to keep track of the BIND_EXPR > + stack and once to properly walk the BIND_EXPR vars. */ > + && (VEC_empty (tree, wtd->bind_expr_stack) > + || VEC_last (tree, wtd->bind_expr_stack) != stmt)) > { > VEC_safe_push (tree, heap, wtd->bind_expr_stack, stmt); > - cp_walk_tree (&BIND_EXPR_BODY (stmt), > + cp_walk_tree (stmt_p, > cp_genericize_r, data, NULL); > VEC_pop (tree, wtd->bind_expr_stack); > *walk_subtrees = 0; > > > in case you want to do some testing. >
It works. Thanks. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40834