[PATCH][4/n] Remove GENERIC stmt combining from SCCVN

Richard Biener rguenther@suse.de
Thu Jul 16 07:41:00 GMT 2015


On Wed, 15 Jul 2015, Andrew MacLeod wrote:

> On 07/15/2015 03:01 PM, Jeff Law wrote:
> > On 07/14/2015 05:37 AM, Richard Biener wrote:
> > > On Tue, 14 Jul 2015, Richard Biener wrote:
> > > 
> > > > 
> > > > Applied.  The following patch adds the equivalences for the destination
> > > > of use stmts if they simplify.
> > > 
> > > Actually I can't use FOR_EACH_IMM_USE_STMT any longer because
> > > record_equivalence ends up calling has_single_use which doens't
> > > handle the special marker FOR_EACH_IMM_USE_STMT inserts.
> 
> hmm, that is unfortunate... and seems almost like a  bug to me... Maybe that
> should be fixed?

Not sure - FOR_EACH_IMM_USE_STMT is really special here and all the
other immediate use helpers shouldn't pay an extra performance
penalty for that special marker.  But I didn't search for existing
cases of handling it.

> And doesn't that also mean num_imm_uses() has a latent bug if used during a
> FOR_EACH_IMM_USE_STMT ?

Yes.

> admittedly neither situation is very common I suspect, but it does seem like a
> hidden gotchya waiting to happen.

I guess we either want to checking-assert that we never hit that
special marker or handle it appropriately.  Or even better avoid
it in the first place (not sure why we have it - I suppose to allow
modifying immediate uses of the current stmt from inside
FOR_EACH_IMM_USE_STMT).

For me single_imm_use_1 crashed on the NULL USE_STMT at

    if (!is_gimple_debug (USE_STMT (ptr)))

so I presume all was fine until debug stmts were introduced
(well, fine as in not crashing, not as in giving correct answers).

Richard.

> Andrew
> 
> 
> 

-- 
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Dilip Upmanyu, Graham Norton, HRB 21284 (AG Nuernberg)



More information about the Gcc-patches mailing list