gcc/
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 16 Sep 2012 19:58:15 +0000 (19:58 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 16 Sep 2012 19:58:15 +0000 (19:58 +0000)
* calls.c (expand_call): Use emit_group_move for PARALLEL->PARALLEL
moves.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@191363 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/calls.c

index a5106a9..74d1f3c 100644 (file)
@@ -1,3 +1,8 @@
+2012-09-16  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * calls.c (expand_call): Use emit_group_move for PARALLEL->PARALLEL
+       moves.
+
 2012-09-15  Tom de Vries  <tom@codesourcery.com>
 
        * tree-vrp.c (extract_range_from_binary_expr_1): Fix bug in handling of
index d4d0917..2180a62 100644 (file)
@@ -3273,7 +3273,13 @@ expand_call (tree exp, rtx target, int ignore)
        {
          if (target == 0)
            target = emit_group_move_into_temps (valreg);
-         else if (!rtx_equal_p (target, valreg))
+         else if (rtx_equal_p (target, valreg))
+           ;
+         else if (GET_CODE (target) == PARALLEL)
+           /* Handle the result of a emit_group_move_into_temps
+              call in the previous pass.  */
+           emit_group_move (target, valreg);
+         else
            emit_group_store (target, valreg, rettype,
                              int_size_in_bytes (rettype));