Hi,

On Tue, 23 Oct 2012, Richard Biener wrote:

> > So, one question, are you claiming that a VRP worker like this:
> > 
> >    VR derive_new_range_from_operation (VR a, VR b)
> > 
> > is _ever_ allowed to return UNDEFINED when a or b is something else than 
> > UNDEFINED?  You seem to claim so AFAIU, but at the same time admit that 
> > this results in oscillation, and hence needs fixing up in the routine that 
> > uses the above result to install the lattice value in the map.  I'm 
> > obviously saying that the above worker is not allowed to return UNDEFINED.
> 
> Yes.  Do you say it never may return a RANGE if either a or b is
> VARYING?

It may not do so if the recorded lattice value for the return ssa name was 
already BOTTOM.  But I think I see were you're getting at; you say the old 
lattice value is not available to derive_new_range_from_operation, so that 
one simply isn't capable of doing the right thing?

But this is about BOTTOM vs. RANGE, not about TOP; I think the workers 
should indeed not be allowed to return TOP, which would create an 
unsymmetry between TOP and BOTTOM, but there we are.

OTOH, when the old lattice value isn't available, I indeed also see no 
other way than your current patch, so let's transform my complaint into 
just a general unhappiness with how VRP is implemented :)


Ciao,
Michael.

Reply via email to