[Bug fortran/29952] Flag to give runtime information " array temporary was created for argument"

pault at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Thu Nov 23 18:31:00 GMT 2006



------- Comment #1 from pault at gcc dot gnu dot org  2006-11-23 18:31 -------
Confirmed.... sort of.
> 
> While one can sometimes not prevent the need for a array temporary, one often
> can and should do so to speed up the program.

            {
              void * D.1019;
              struct array1_real4 parm.2;
              int4 D.1008;

              D.1008 = i;
              parm.2.dtype = 281;
              parm.2.dim[0].lbound = 1;
              parm.2.dim[0].ubound = 3;
              parm.2.dim[0].stride = 20;
              parm.2.data = (void *) &coord[D.1008 + -1];
              parm.2.offset = 0;
              D.1019 = _gfortran_internal_pack (&parm.2);
              d = distance (D.1019);
              if (D.1019 != (real4[0:] *) parm.2.data)
                {
                  _gfortran_internal_unpack (&parm.2, D.1019);
                  _gfortran_internal_free (D.1019);
                }
              else
                {
                  (void) 0;
                }
            }

It is the parm.2.dim[0].stride = 20; that determines the need for a temporary. 
If it has a value of 1, internal pack returns a pointer to the source array. 
Thus, such an option would work for constant strides of other than one but
would have to report in real-time for variable strides.

Paul 


-- 

pault at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2006-11-23 18:31:25
               date|                            |


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



More information about the Gcc-bugs mailing list