This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Support signbit, signbitf and signbitl as GCC builtins
- From: Ulrich Weigand <weigand at i1 dot informatik dot uni-erlangen dot de>
- To: roger at eyesopen dot com (Roger Sayle)
- Cc: weigand at i1 dot informatik dot uni-erlangen dot de (Ulrich Weigand), rth at redhat dot com, gcc-patches at gcc dot gnu dot org
- Date: Thu, 5 Feb 2004 14:22:59 +0100 (CET)
- Subject: Re: [PATCH] Support signbit, signbitf and signbitl as GCC builtins
Roger Sayle wrote:
> > (insn 11 3 13 0 (set (reg:SI 43)
> > (subreg:SI (reg/v:DF 41 [ x ]) 0)) 54 {*movsi_zarch} (insn_list 3 (nil))
> > (expr_list:REG_DEAD (reg/v:DF 41 [ x ])
> > (nil)))
>
> How does this RTL match the constraints for movsi_zarch pattern?
This is before reload, so constraints have not yet been considered.
The only check done before reload is that the source operand satisfies
"general_operand", which any subreg does; as far as insn operands are
concerned, subregs can be used most everywhere regs can.
(In the case of subregs that fulfil the condition I mentioned in my
earlier mail, this is justified, because this condition guarantees
that the subreg can be replaced by a simple reg after reload.)
> Forgive me, I'm out of my depth with backend machine descriptions.
> But it looks as though the constraints for movsi_zarch claim that
> it can perform the necessary subreg without the help of reload.
It is only reload that considers constraints; and in fact reload
*does* recognize that the insn needs to be modified; it simply
does not know how to do so correctly.
Bye,
Ulrich
--
Dr. Ulrich Weigand
weigand@informatik.uni-erlangen.de