* gimplify.c (gimplify_init_constructor): Do a block move for very
small objects as well.
From-SVN: r187498
+2012-05-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gimplify.c (gimplify_init_constructor): Do a block move for very
+ small objects as well.
+
2012-05-15 Bernd Schmidt <bernds@codesourcery.com>
* ira.c (find_moveable_pseudos): Skip registers whose
else
align = TYPE_ALIGN (type);
+ /* Do a block move either if the size is so small as to make
+ each individual move a sub-unit move on average, or if it
+ is so large as to make individual moves inefficient. */
if (size > 0
&& num_nonzero_elements > 1
- && !can_move_by_pieces (size, align))
+ && (size < num_nonzero_elements
+ || !can_move_by_pieces (size, align)))
{
if (notify_temp_creation)
return GS_ERROR;