------- Comment #2 from fxcoudert at gcc dot gnu dot org  2007-03-16 15:25 
-------
Forgot to say: the original tree dump is

f (__result, .__result, k)
{
  (void) 0;


MAIN__ ()
{
  static void f (char[1:] &, int4, int4 &);

  _gfortran_set_std (68, 127, 0);
  {
    void * D.1377;
    void * D.1374;
    struct array1_unknown atmp.3;
    void * D.1367;
    struct array1_unknown atmp.0;

    atmp.0.dtype = (SAVE_EXPR <(<unnamed type>) (..__result + -1) + 1> << 6) +
49;
    atmp.0.dim[0].stride = 1;
    atmp.0.dim[0].lbound = 0;
    atmp.0.dim[0].ubound = 0;
    D.1367 = _gfortran_internal_malloc64 ((int8) (SAVE_EXPR <(<unnamed type>)
(..__result + -1) + 1>));
    atmp.0.data = D.1367;
    atmp.0.offset = 0;
    {
      char[1:D.1371] * pstr.2;
      int4 D.1371;
      int4 * D.1370;
      static int4 C.1369 = 1;

      D.1370 = &C.1369;
      D.1371 = *D.1370;
      pstr.2 = (char[1:D.1371] *) _gfortran_internal_malloc (D.1371);
      f (pstr.2, D.1371, D.1370);
      __builtin_memcpy (&(*(char[0:][1:..__result] *) atmp.0.data)[0], pstr.2,
D.1371);
      _gfortran_internal_free ((void *) pstr.2);
    }
    atmp.3.dtype = (SAVE_EXPR <(<unnamed type>) (..__result + -1) + 1> << 6) +
49;
    atmp.3.dim[0].stride = 1;
    atmp.3.dim[0].lbound = 0;
    atmp.3.dim[0].ubound = 0;
    D.1374 = _gfortran_internal_malloc64 ((int8) (SAVE_EXPR <(<unnamed type>)
(..__result + -1) + 1>));
    atmp.3.data = D.1374;
    atmp.3.offset = 0;
    {
      int8 S.4;

      S.4 = 0;
      while (1)
        {
          if (S.4 > 0) goto L.1;
          (*(char[0:][1:..__result] *) atmp.3.data)[S.4] =
(*(char[0:][1:..__result] *) atmp.0.data)[S.4];
          S.4 = S.4 + 1;
        }
      L.1:;
    }
    D.1377 = _gfortran_internal_pack (&atmp.3);
    gee (D.1377, ..__result);
    if (D.1377 != (char[0:][1:..__result] *) atmp.3.data)
      {
        _gfortran_internal_unpack (&atmp.3, D.1377);
        _gfortran_internal_free (D.1377);
      }
    _gfortran_internal_free (atmp.0.data);
    _gfortran_internal_free (atmp.3.data);
  }
}


-- 


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

Reply via email to