[Bug fortran/30398] memmove for string operations

2007-01-06 Thread tkoenig at gcc dot gnu dot org


--- Comment #1 from tkoenig at gcc dot gnu dot org  2007-01-06 22:07 ---
(In reply to comment #0)
> The compiler should be able to detect that s and c
> are not aliased, so a call to memcpy instead of memmove
> could be issued.

Or, even better, the memmove/memcpy could be ommitted completely,
by using the variable directly as the target.


-- 


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



[Bug fortran/30398] memmove for string operations

2007-01-22 Thread fxcoudert at gcc dot gnu dot org


--- Comment #2 from fxcoudert at gcc dot gnu dot org  2007-01-22 10:02 
---
(In reply to comment #1)
> Or, even better, the memmove/memcpy could be ommitted completely,
> by using the variable directly as the target.

The string_repeat() function could be generated directly by the front-end,
because it's really simple code:

void
string_repeat (char * dest, GFC_INTEGER_4 slen,
   const char * src, GFC_INTEGER_4 ncopies)
{
  int i;

  /* See if ncopies is valid.  */
  if (ncopies < 0)
{
  /* The error is already reported.  */
  runtime_error ("Augument NCOPIES is negative.");
}

  /* Copy characters.  */
  for (i = 0; i < ncopies; i++)
{
  memmove (dest + (i * slen), src, slen);
}
}


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2007-01-22 10:02:53
   date||


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