On Thu, 7 Apr 2022, Jan Hubicka wrote:

> > On Thu, 7 Apr 2022, Jan Hubicka wrote:
> > 
> > > Hi,
> > > this patch fixes miscompilation of gnatmake.  Modref attempts to track 
> > > memory
> > > accesses relative to the base pointers which are parameters of functions.
> > > If it fails, it still makes difference between unknown memory access and
> > > global memory access.  The second makes it possible to disambiguate with
> > > memory that is not accessible from outside world (i.e. everything that 
> > > does
> > > not escape from the caller function).  This is useful so we do not punt
> > > when unknown function is called.
> > > 
> > > Now I added ref_may_access_global_memory_p to tree-ssa-alias whic is using
> > > ptr_deref_may_alias_global_p.  There is however a shift in meaning of this
> > > predicate: the second tests that the dereference may alias with global 
> > > variable.
> > > 
> > > In the testcase we are disambiguating heap allocated escaping memory 
> > > which is
> > > not a global variable but it is still a global memory in the modref's 
> > > sense.
> > > So we need to test in addition contains_escaped.
> > > 
> > > The patch simply copies logic from the predicate and adds the check.  
> > > I am not sure if there is better way to handle this?
> > 
> > I'm testing the following variant which exposes this detail
> > (escaped local memory global or not) in the APIs that say "global"
> > which allows to remove ref_may_access_global_memory_p.
> 
> Thank you.  Indeed it is better to have an explicit flag, since the
> clash of names is bit sensitive. 

OK - bootstrapped / tested on x86_64-unknown-linux-gnu including Ada
and now pushed.

Thanks for analyzing this!

Richard.

Reply via email to