diff options
author | sje <sje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-11-15 17:27:44 +0000 |
---|---|---|
committer | sje <sje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-11-15 17:27:44 +0000 |
commit | 631188f520c2dc4674115bafbc3b1c08c2b950c5 (patch) | |
tree | b5c0532be30bba686ce4d321fd0e2ca0f2bf152a | |
parent | 68683bff8801e6bd5fc05e42050d4ecbe34a656a (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | 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 <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, |