diff options
-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); |