expr.c (expand_cond_expr_using_cmove): Use promoted mode for temp.

2012-11-15  Steve Ellcey  <sellcey@mips.com>

	* expr.c (expand_cond_expr_using_cmove): Use promoted mode for temp.

From-SVN: r193539
This commit is contained in:
Steve Ellcey 2012-11-15 17:27:44 +00:00 committed by Steve Ellcey
parent 7ee2eb8277
commit 59bdc31c02
2 changed files with 12 additions and 6 deletions

View File

@ -1,3 +1,7 @@
2012-11-15 Steve Ellcey <sellcey@mips.com>
* expr.c (expand_cond_expr_using_cmove): Use promoted mode for temp.
2012-11-15 Tom de Vries <tom@codesourcery.com>
PR tree-optimization/54619

View File

@ -7840,15 +7840,17 @@ expand_cond_expr_using_cmove (tree treeop0 ATTRIBUTE_UNUSED,
int unsignedp = TYPE_UNSIGNED (type);
enum machine_mode mode = TYPE_MODE (type);
temp = assign_temp (type, 0, 1);
/* If we cannot do a conditional move on the mode, try doing it
with the promoted mode. */
if (!can_conditionally_move_p (mode))
mode = promote_mode (type, mode, &unsignedp);
if (!can_conditionally_move_p (mode))
return NULL_RTX;
{
mode = promote_mode (type, mode, &unsignedp);
if (!can_conditionally_move_p (mode))
return NULL_RTX;
temp = assign_temp (type, 0, 0); /* Use promoted mode for temp. */
}
else
temp = assign_temp (type, 0, 1);
start_sequence ();
expand_operands (treeop1, treeop2,