This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: call_value problem: var = func() !?
- From: "M. -Eqbal Maraqa" <maraqa at eecs dot rwth-aachen dot de>
- To: gcc at gcc dot gnu dot org
- Date: Thu, 01 Jul 2010 14:57:24 +0200
- Subject: Re: call_value problem: var = func() !?
- References: <20100630120636.GA25491@kmos.rog.rwth-aachen.de> <4C2B6966.7020909@redhat.com>
Hello all, hello Richard and thank you for your help.
On Wed, 30.06.2010 08:57, Richard Henderson wrote:
> On 06/30/2010 05:06 AM, M. -Eqbal Maraqa wrote:
> > f1.c:5:1: error: unrecognizable insn:
> > (insn 12 11 13 3 f1.c:4
> > (set (mem/c/i:SI (reg/f:SI 23 [ D.1964 ]) [0 <retval>+0 S4 A32])
> > (mem/c/i:SI (plus:SI (reg/f:SI 19 virtual-stack-vars)
> > (const_int -4 [0xfffffffffffffffc]))
> > [0 tmp+0 S4 A32])) -1 (nil))
>
> I strongly suspect that your movsi expander is incorrect.
Yep, that was the problem. I wrote a stupid predicate for the move
operands, that would allow mem to mem moves, which is not supported by
the architecture and consequently the define_insn.
> You've missed that the operand to call is always a mem. Most
> ports look through this mem immediately, e.g.
I corrected that one as well.
Kind regards.
--
if [ $(uname) = "Linux" ];then echo "[q]sb[lv0=blv256%Plv256/svlcx]sc911084920508\
6363247337574050075032905184391195412274100697358608023133864165787933915045683\
432087129472907338347329339706073226139582008068077725378669120069632svlcxq"|dc;fi;