This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.


  Dr. Ulrich Weigand

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]