On Fri, Aug 02, 2024 at 06:29:27PM +0200, Mikael Morin wrote:
> I agree with all of that.  Sure keeping the condition around would be the
> safest.  I'm just afraid of keeping code that would remain dead.
> 
> > > > And the pasto fix would guess fix
> > > > aliasing_dummy_5.f90 with
> > > >       arg(2:3) = arr(1:2)
> > > > instead of
> > > >       arr(2:3) = arg(1:2)
> > > > if the original testcase would actually fail.
> > > > 
> > > Mmh, aren't they both actually the same?

> They can alias, and they do alias.  So in the end, writing either line is
> equivalent, what do I miss?

So, I had another look.  Seems the reason why the testcase passes is that
gfc_could_be_alias (called from gfc_conv_resolve_dependencies) returns true,
so the assignment goes through a temporary array.
gfc_check_dependency is then only called for
  if (lhs->rank > 0 && gfc_check_dependency (lhs, rhs, true) == 0)
    optimize_binop_array_assignment (c, &rhs, false);

Guess the question is if one can construct a testcase where it would make a
difference.

        Jakub

Reply via email to