+2009-05-11 Paolo Bonzini <bonzini@gnu.org>
+
+ PR tree-optimization/40026
+ * gimplify.c (gimplify_init_constructor): Change initial conditional
+ to assertion. Rewrite TREE_OPERAND (*expr_p, 1) after
+ optimize_compound_literals_in_ctor.
+
2009-05-11 Nathan Sidwell <nathan@codesourcery.com>
* config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
bool want_value, bool notify_temp_creation)
{
- tree object, new_ctor;
- tree ctor = TREE_OPERAND (*expr_p, 1);
- tree type = TREE_TYPE (ctor);
+ tree object, ctor, type;
enum gimplify_status ret;
VEC(constructor_elt,gc) *elts;
- if (TREE_CODE (ctor) != CONSTRUCTOR)
- return GS_UNHANDLED;
+ gcc_assert (TREE_CODE (TREE_OPERAND (*expr_p, 1)) == CONSTRUCTOR);
if (!notify_temp_creation)
{
}
object = TREE_OPERAND (*expr_p, 0);
- new_ctor = optimize_compound_literals_in_ctor (ctor);
- elts = CONSTRUCTOR_ELTS (new_ctor);
+ ctor = TREE_OPERAND (*expr_p, 1) =
+ optimize_compound_literals_in_ctor (TREE_OPERAND (*expr_p, 1));
+ type = TREE_TYPE (ctor);
+ elts = CONSTRUCTOR_ELTS (ctor);
ret = GS_ALL_DONE;
switch (TREE_CODE (type))