]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
calls.c (expand_call): Use emit_group_move for PARALLEL->PARALLEL moves.
authorRichard Sandiford <rdsandiford@googlemail.com>
Sun, 16 Sep 2012 19:58:15 +0000 (19:58 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sun, 16 Sep 2012 19:58:15 +0000 (19:58 +0000)
gcc/
* calls.c (expand_call): Use emit_group_move for PARALLEL->PARALLEL
moves.

From-SVN: r191363

gcc/ChangeLog
gcc/calls.c

index a5106a95fd883fbd612958aaec8ef1b85e72598f..74d1f3c34e7ebd58d5e02eb61631997faf56232c 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 d4d0917bd1e42fb18134cefbad709a3fd0dd1f43..2180a622002516dc9a48549d2eed4470c6a2abde 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));