Commit 1bae867a by Eric Botcazou Committed by Eric Botcazou

re PR rtl-optimization/55630 (FAIL: g++.dg/pr48660.C -std=c++98 (internal compiler error))

	PR rtl-optimization/55630
	* expr.c (expand_assignment): Do not call copy_blkmode_to_reg to move
	BLKmode return values to the return register.

From-SVN: r194530
parent 0e76460f
2012-12-16 Eric Botcazou <ebotcazou@adacore.com>
PR rtl-optimization/55630
* expr.c (expand_assignment): Do not call copy_blkmode_to_reg to move
BLKmode return values to the return register.
2012-12-15 Alexandre Oliva <aoliva@redhat.com>
PR libmudflap/53952
......@@ -4947,7 +4947,12 @@ expand_assignment (tree to, tree from, bool nontemporal)
rtx temp;
push_temp_slots ();
if (REG_P (to_rtx) && TYPE_MODE (TREE_TYPE (from)) == BLKmode)
/* If the source is itself a return value, it still is in a pseudo at
this point so we can move it back to the return register directly. */
if (REG_P (to_rtx)
&& TYPE_MODE (TREE_TYPE (from)) == BLKmode
&& TREE_CODE (from) != CALL_EXPR)
temp = copy_blkmode_to_reg (GET_MODE (to_rtx), from);
else
temp = expand_expr (from, NULL_RTX, GET_MODE (to_rtx), EXPAND_NORMAL);
......
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