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

Paul Thomas <pault at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-03-31
                 CC|                            |pault at gcc dot gnu.org
           Assignee|unassigned at gcc dot gnu.org      |pault at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Paul Thomas <pault at gcc dot gnu.org> ---
Confirmed. You beat me to it by about 30 minutes, Vladimir!

The problem is the recursive call within 'show_generic':

            D.3571 = a->_data.dim[0].ubound;
            parm.2.dtype = 345;
            D.3575 = a->_data.dim[0].stride;
            parm.2.dim[0].lbound = 1;
            parm.2.dim[0].ubound = D.3571 + -1;
            parm.2.dim[0].stride = NON_LVALUE_EXPR <D.3575>;
            parm.2.data = a->_data.data + (sizetype) (a->_vptr->_size *
NON_LVALUE_EXPR <D.3575>);
            parm.2.offset = 0;
            class.3._data = VIEW_CONVERT_EXPR<struct array1_unknown>(parm.2);
            class.3._vptr = a->_vptr;
            show_generic (&class.3);

The offset is 0, whereas it should be -1.

The call to 'show_generic' from the main program is done correctly:

    parm.17.dtype = 281;
    parm.17.dim[0].lbound = 1;
    parm.17.dim[0].ubound = 6;
    parm.17.dim[0].stride = 1;
    parm.17.data = (void *) &array[0];
    parm.17.offset = -1;
    class.16._data = parm.17;
    show_generic (&class.16);

This tells us exactly where the problem is.

I am taking it.

Paul

Reply via email to