calls.c (expand_call): Supress sibcall if we have a BLKmode return in registers.
authorRichard Henderson <rth@redhat.com>
Thu, 26 Oct 2000 23:15:26 +0000 (16:15 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 26 Oct 2000 23:15:26 +0000 (16:15 -0700)
        * calls.c (expand_call): Supress sibcall if we have a
        BLKmode return in registers.

From-SVN: r37076

gcc/ChangeLog
gcc/calls.c

index eb72543..8367bdb 100644 (file)
@@ -1,3 +1,8 @@
+2000-10-26  Richard Henderson  <rth@redhat.com>
+
+       * calls.c (expand_call): Supress sibcall if we have a 
+       BLKmode return in registers.
+
 2000-10-26  Bernd Schmidt  <bernds@redhat.co.uk>
 
        * ia64.h (PREFERRED_RELOAD_CLASS): Force floating point constants
index 0eea664..e90be2e 100644 (file)
@@ -3259,7 +3259,12 @@ expand_call (exp, target, ignore)
          emit_move_insn (target, valreg);
        }
       else if (TYPE_MODE (TREE_TYPE (exp)) == BLKmode)
-       target = copy_blkmode_from_reg (target, valreg, TREE_TYPE (exp));
+       {
+         target = copy_blkmode_from_reg (target, valreg, TREE_TYPE (exp));
+
+         /* We can not support sibling calls for this case.  */
+         sibcall_failure = 1;
+       }
       else
        target = copy_to_reg (valreg);