This is the mail archive of the
mailing list for the GCC project.
Re: m68k call_value insn
- From: Bernardo Innocenti <bernie at develer dot com>
- To: Andreas Schwab <schwab at suse dot de>
- Cc: GCC Mailing List <gcc at gcc dot gnu dot org>, Richard Henderson <rth at redhat dot com>,Gunther Nikl <gni at gecko dot de>
- Date: Mon, 15 Sep 2003 15:14:16 +0200
- Subject: Re: m68k call_value insn
- Organization: Develer S.r.l.
- References: <3F64F6A2.email@example.com> <firstname.lastname@example.org>
Andreas Schwab wrote:
Bernardo Innocenti <email@example.com> writes:
it seems the call_value insn in the m68k back-end isn't
really doing what its specification says:
Subroutine call instruction returning a value. Operand 0 is the
hard register in which the value is returned. There are three more
operands, the same as the three operands of the `call' instruction
(but with numbers increased by one).
Subroutines that return `BLKmode' objects use the `call' insn.
The code in m68k.md seems to be ignoring operand 0, thus leaving the
return value in %d0 (or %fp0 for floats), which is apparently invalid:
Since the register for the return value is fixed, there is no point in
looking at operand 0.
I thought that pattern was meant to do something like this:
// Bernardo Innocenti - Develer S.r.l., R&D dept.
Please don't send Word attachments - http://www.gnu.org/philosophy/no-word-attachments.html