OSDN Git Service

2012-11-15 Steve Ellcey <sellcey@mips.com>
authorsje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Nov 2012 17:27:44 +0000 (17:27 +0000)
committersje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Nov 2012 17:27:44 +0000 (17:27 +0000)
* 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

gcc/ChangeLog
gcc/expr.c

index cecf13e..950b8ff 100644 (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
index cbf3a40..b1b83d0 100644 (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,