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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

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

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2011-04-06 
23:03:46 UTC ---
This is the correct behavior.
Try doing:
void doit(char *d, char *s, int loops) {

  long  ll = (long) loops;



    asm(

      "xor  %%rax, %%rax;" // clear loop ctr

       "movq %2, %%rdx;"  // load length



      "cmp %%rax, %%rdx;" // len == 0?

      "je 1f;"



      "add  $16, %%rax;"   // inc loop ctr



      "cmp %%rax, %%rdx;"

      "je 1f;"



      "1:"



      : /* no outputs */

      : "m" (s), "m" (d), "m" (ll)

      : /* clobbers */ "eax", "edx", "esi", "edi"

    );




}

This will make the label local and will not have the problem of having two ore
more 'done''s.

*** This bug has been marked as a duplicate of bug 20468 ***

Reply via email to