+2008-10-21 Richard Guenther <rguenther@suse.de>
+
+ * semantics.c (simplify_aggr_init_exprs_r): Remove.
+ (expand_or_defer_fn): Do not walk the function body to
+ simplify aggr_init_exprs.
+
2008-10-20 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c++/37004
degenerate form of parsing. */
static tree maybe_convert_cond (tree);
-static tree simplify_aggr_init_exprs_r (tree *, int *, void *);
static tree finalize_nrv_r (tree *, int *, void *);
return fold_offsetof (expr, NULL_TREE);
}
-/* Called from expand_body via walk_tree. Replace all AGGR_INIT_EXPRs
- with equivalent CALL_EXPRs. */
-
-static tree
-simplify_aggr_init_exprs_r (tree* tp,
- int* walk_subtrees,
- void* data ATTRIBUTE_UNUSED)
-{
- /* We don't need to walk into types; there's nothing in a type that
- needs simplification. (And, furthermore, there are places we
- actively don't want to go. For example, we don't want to wander
- into the default arguments for a FUNCTION_DECL that appears in a
- CALL_EXPR.) */
- if (TYPE_P (*tp))
- {
- *walk_subtrees = 0;
- return NULL_TREE;
- }
- /* Only AGGR_INIT_EXPRs are interesting. */
- else if (TREE_CODE (*tp) != AGGR_INIT_EXPR)
- return NULL_TREE;
-
- simplify_aggr_init_expr (tp);
-
- /* Keep iterating. */
- return NULL_TREE;
-}
-
/* Replace the AGGR_INIT_EXPR at *TP with an equivalent CALL_EXPR. This
function is broken out from the above for the benefit of the tree-ssa
project. */
gcc_assert (gimple_body (fn));
- /* Replace AGGR_INIT_EXPRs with appropriate CALL_EXPRs. */
- cp_walk_tree_without_duplicates (&DECL_SAVED_TREE (fn),
- simplify_aggr_init_exprs_r,
- NULL);
-
/* If this is a constructor or destructor body, we have to clone
it. */
if (maybe_clone_body (fn))