This is the mail archive of the gcc@gcc.gnu.org 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: Modifying ARM code generator for elimination of 8bit writes - need help


On Sun, Jun 04, 2006 at 05:26:42PM +0200, Wolfgang Mües wrote:
> Paul,
> 
> On Sunday 04 June 2006 13:24, Paul Brook wrote:
> 
> > You should just change the valid QImode memory addresses, adding a new 
> > constraint if neccessary. 
> 
> Hmmmm... I have tried this. I have changed the operand constraint from 
> "m" to "Q". But these constraints are only used to select the right 
> alternative inside the insn, not which insn is invoked. It might be 
> possible to modify "nonimmediate_operand"
> into something else, to select this insn only if the address is fitting 
> in a single register, without offset or increment.

There's no need to modify "nonimmediate_operand" or use another predicate.
It matches a memory operand, which is fine.

> But this will not give me the freedom to allocate a temporary register. 

See TARGET_SECONDARY_RELOAD in the section "Register Classes".

> According to the manual, mov insns are not supposed to clobber a 
> register.

I can't find any statement to that effect. Where does it say so? But I can
see why it would be a problem when reload_in_progress.
(It would make it difficult to convert the m68k backend from cc0 to CC_REG.)

-- 
Rask Ingemann Lambertsen


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