Commit d720b9d1 by Richard Kenner

(expand_expr...

(expand_expr, case CONSTRUCTOR): If constant and large enough for
memcpy to be used, build constructor into static memory.

From-SVN: r7365
parent d0c84fda
...@@ -4102,12 +4102,18 @@ expand_expr (exp, target, tmode, modifier) ...@@ -4102,12 +4102,18 @@ expand_expr (exp, target, tmode, modifier)
if this is a non-BLKmode mode, let it store a field at a time if this is a non-BLKmode mode, let it store a field at a time
since that should make a CONST_INT or CONST_DOUBLE when we since that should make a CONST_INT or CONST_DOUBLE when we
fold. Likewise, if we have a target we can use, it is best to fold. Likewise, if we have a target we can use, it is best to
store directly into the target. If we are making an initializer and store directly into the target unless the type is large enough
that memcpy will be used. If we are making an initializer and
all operands are constant, put it in memory as well. */ all operands are constant, put it in memory as well. */
else if ((TREE_STATIC (exp) else if ((TREE_STATIC (exp)
&& ((mode == BLKmode && ((mode == BLKmode
&& ! (target != 0 && safe_from_p (target, exp))) && ! (target != 0 && safe_from_p (target, exp)))
|| TREE_ADDRESSABLE (exp))) || TREE_ADDRESSABLE (exp)
|| (TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
&& (move_by_pieces_ninsns
(TREE_INT_CST_LOW (TYPE_SIZE (type)),
TYPE_ALIGN (type))
> MOVE_RATIO))))
|| (modifier == EXPAND_INITIALIZER && TREE_CONSTANT (exp))) || (modifier == EXPAND_INITIALIZER && TREE_CONSTANT (exp)))
{ {
rtx constructor = output_constant_def (exp); rtx constructor = output_constant_def (exp);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment