From 59bdc31c02bd400b727ebd4b2d6e57bd558dab37 Mon Sep 17 00:00:00 2001 From: Steve Ellcey Date: Thu, 15 Nov 2012 17:27:44 +0000 Subject: [PATCH] expr.c (expand_cond_expr_using_cmove): Use promoted mode for temp. 2012-11-15 Steve Ellcey * expr.c (expand_cond_expr_using_cmove): Use promoted mode for temp. From-SVN: r193539 --- gcc/ChangeLog | 4 ++++ gcc/expr.c | 14 ++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cecf13ed8ec..950b8ff6dcf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2012-11-15 Steve Ellcey + + * expr.c (expand_cond_expr_using_cmove): Use promoted mode for temp. + 2012-11-15 Tom de Vries PR tree-optimization/54619 diff --git a/gcc/expr.c b/gcc/expr.c index cbf3a4038e8..b1b83d0e1df 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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,