------- Comment #4 from mikael at gcc dot gnu dot org  2009-01-20 22:29 -------
(In reply to comment #3)
> DLA => DDA(2:3, 1:3:2, 5:4:-1, NF2, NF5:NF2:MF2)
> 
> The descriptor built for DLA has negative strides for dimension >= 3. 
> This makes ubound fail. 
> 
Forget this

DLA => DDA(2:3, 1:3:2, 5:4:-1, NF2, NF5:NF2:MF2)

    dla.dim[0].lbound = 1;
    dla.dim[0].ubound = 2;
    dla.dim[0].stride = 1;
    dla.dim[1].lbound = 1;
    dla.dim[1].ubound = 2;
    dla.dim[1].stride = 10;
    dla.dim[2].lbound = 1;
    dla.dim[2].ubound = 2;
    dla.dim[2].stride = -25;
    dla.dim[3].lbound = 1;
    dla.dim[3].ubound = D.1563 + 1;
    dla.dim[3].stride = D.1561 * 625;

There is a distinction to make between user-provided bounds and
front-end-generated bounds. 
   In the former case (original array) the array is non-empty if ubound >
lbound and stride > 0 or if ubound < lbound and stride < 0. 
   In the latter case, it is non-empty if ubound > lbound only. Comparing
ubound and lbound according to the stride to check for zero-sized arrays
doesn't make sense in this case (see dimension 2 of dla). 


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38852

Reply via email to