diff options
author | Richard Henderson <rth@redhat.com> | 2000-10-26 16:15:26 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2000-10-26 16:15:26 -0700 |
commit | 8eb99146fb0cd70a29d359508fe27bfb4767cb8c (patch) | |
tree | 7c494e52ae3f3c79e7d798a6b2a4259d98643e55 | |
parent | 036099eb8fa7798adc7e8558e0d570dc26f3eb50 (diff) | |
download | gcc-8eb99146fb0cd70a29d359508fe27bfb4767cb8c.zip gcc-8eb99146fb0cd70a29d359508fe27bfb4767cb8c.tar.gz gcc-8eb99146fb0cd70a29d359508fe27bfb4767cb8c.tar.bz2 |
calls.c (expand_call): Supress sibcall if we have a BLKmode return in registers.
* calls.c (expand_call): Supress sibcall if we have a
BLKmode return in registers.
From-SVN: r37076
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/calls.c | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eb72543..8367bdb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/calls.c b/gcc/calls.c index 0eea664..e90be2e 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -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); |