This is the mail archive of the gcc-patches@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: [PATCH] PR opt/12280: Avoid RTL sharing in noce_emit_cmove


> > > I am currently testing modified patch that allows sharing of CONSTs
> > > everywhere.
> > 
> > Maybe.  I'm thinking that we probably only shared CONSTs at all 
> > to make sharing of constant MEMs possible.  Perhaps we shouldn't
> > bother sharing them at all.
> 
> I an give this approach a try and return back on how many bugs it finds.
> Any good reasons for unsharing them?  (it looks quite wastefull for me).
> I think the only reason why CONSTs containing labels are shared is to
> get redirect_jump working on architectures that mangle destination label
> into CONST sequences.
> I was not able to come with any different case where sharing them might
> be harmfull and perhaps we may want to update it on the other side (make
> redirect_jump to always produce new CONST) that would harm just those
> interesting architectures.  (any example of these?)
> > 
> > Clearly all of this is going to require extensive testing on many
> > ports.  Your checker is going to find *lots* of latent bugs.
> 
> Yes.  I can find lots of latent bugs on i386 as well.
> Lets get the code into final form and not enable the checking until I
> get it bootstrapping at least on few main architectures.  Here is
> updated patch.  I finally got what you were shooting for with copy_rtx.
> Sorry for being so dense these days...

I also run into interesting sharing bug in i386.
We simply do expand division during loop unrolling.  The division
instruction is represented as divide+mod combo so the operands appears
twice and thus get shared.
What would you think about my plan to unshare each insn sequence emit to
the stream?

Honza


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