This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Use of SECONDARY_RELOAD_REGISTER HELP PLEASE!!
- From: Pierre Mallard <pierremallard at yahoo dot fr>
- To: Joern Rennecke <joern dot rennecke at superh dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: Thu, 7 Nov 2002 16:07:13 +0100 (CET)
- Subject: Re: Use of SECONDARY_RELOAD_REGISTER HELP PLEASE!!
Thanks for your help
In this rtl , the problem is that I don't feel like
making a define_insn for an ashift and a clobber
because I don't need it.
So I'm wondering how I can get rid of it?
The problem seems to me that a previous rtl was a set
that directly generate a clobber and then was merge
with an ashift keeping the clobber.
PS: I found a temporaly solution (from avr) wich
consist of the use of define_peephole2 that add a
clobber to the set if needed.
It works fine just like I want when I'm in 2 or 3
optimisation, but this doesn't work for 0 or 1...
I 'm really stuck on this problem and I really don't
know any solution..
Thanks anyway
Pierre
--- Joern Rennecke <joern.rennecke@superh.com> a
écrit : > > But this leads to problem with the
combione phase
> > (.cse) that create then unknow expression such as
> :
> > (parallel
> > (set (reg:Mode) (ashift:Mode
> (reg:Mode)(const_int)))
> > (clobber ("fixed reg"))
>
> Presumably that fixed register was before set and/or
> clobbered by one of the combined insns.
>
> Such an extra clobber should be really harmless.
> Don't do anything rash when you see a register in
> a clobber, just ignore it if you don't need it.
> If you find that its presence impedes optimization,
> you can use a splitter to get rid of it.
>
> > Then I'm takig another direction by finally use
> > SECONDARY_RELOAD_CLASS.
> > In order to do this I created two register classes
> ,
> > one with only one Pmode reg C1 and the other with
> the
> > rest of my register C2. I thought that then if he
> > wants to reload the first one C1 he will create a
> > scratch in C2 and C2 will get a C1 scratch.
> > But it appears that when he wants to reload C1
> and
> > get C2 but just after will try C2 and get C1 ...
> ...
> > And here we go for an infinite loop.!!!!
>
>
> This sounds like you bothed the test that checks
> what value is being reloaded.
>
> --
> --------------------------
> SuperH (UK) Ltd.
> 2410 Aztec West / Almondsbury / BRISTOL / BS32 4QX
> T:+44 1454 465658
___________________________________________________________
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Yahoo! Mail : http://fr.mail.yahoo.com