https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121805

--- Comment #8 from kargls at comcast dot net ---
(In reply to Mikael Morin from comment #6)
> (In reply to kargls from comment #3)
> >    idx = [(i,i=1,8)]
> >    e%data = idx
> >    dd=>e%data
> >    array_sum = sum(idx(dd))
> ...
> >               D.4694 = *(integer(kind=4) *) (dd.data + (sizetype)
> > ((dd.dim[0].stride *
> >                         NON_LVALUE_EXPR <S.3>) * 4));
> >               D.4695 = (integer(kind=8)) D.4694;
> > 
> > I think the above should be D.4695 = (integer(kind=8)) D.4694 + 1.
> 
> Should it?
> These variables are the values of elements of dd, which is a copy of idx.
> So the variables should have range [1:8]; why add 1?

You certainly have a better understanding of the scalarizer than I.

But, the reason I think a +1 is missing is the -1 here:

              val.2 = idx[D.4695 + -1] + val.2;

Not to mention that the error message from -fcheck=all says the lower
bound is 0 when the range is (1:8).

Reply via email to