summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>2012-11-15 17:27:44 +0000
committersje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>2012-11-15 17:27:44 +0000
commit631188f520c2dc4674115bafbc3b1c08c2b950c5 (patch)
treeb5c0532be30bba686ce4d321fd0e2ca0f2bf152a
parent68683bff8801e6bd5fc05e42050d4ecbe34a656a (diff)
downloadgcc-631188f520c2dc4674115bafbc3b1c08c2b950c5.tar.gz
2012-11-15 Steve Ellcey <sellcey@mips.com>
* expr.c (expand_cond_expr_using_cmove): Use promoted mode for temp. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193539 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/expr.c14
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 <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
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,