------- Comment #1 from rguenth at gcc dot gnu dot org  2009-03-09 15:36 -------
You need to specify that the registers are clobbered by the asm.  The only
way to do that is to use output constraints ("+D", "+c", etc.) on proper
temporaries.

  int lent = len;
  char *dstt = dst;
  char *srct = src;
  __asm__ __volatile__(
                       "cld\n\t"
                       "rep movsb"
                       : "+c" (lent), "+D"(dstt), "+S"(src)
                      );

Otherwise GCC thinks the registers still hold the original value.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |INVALID


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

Reply via email to