title: Assembly compilation error (gcc4.2.4=win, gcc4.3.3=fail)
body: <p>We recently upgraded the code to <code>gcc4.3.3</code> from <code>gcc4.2.4</code>. </p>
  
  <pre><code>void testAndSet(  volatile int*  s, int* val )
  {
     __asm__ __volatile__ ( "btsl   $0, %0\n   "
             "jc   bitSet\n   "
             "movl   $0, %1\n   "
             "jmp   returnVector\n"
             "bitSet:\n   "
             "movl   $1, %1\n"
             "returnVector: " : "=m"(*s), "=m"(*val) );
  }
  </code></pre>
  
  <p>Our code now fails with the following errors,</p>
  
  <pre><code>lock.cxx: Assembler messages:
  lock.cxx:59: Error: symbol `bitSet' is already defined
  lock.cxx:61: Error: symbol `returnVector' is already defined
  lock.cxx:59: Error: symbol `bitSet' is already defined
  lock.cxx:61: Error: symbol `returnVector' is already defined
  </code></pre>
  
  <p>Those symbols weren't found anywhere else. (Renaming them causes the same error with the new name).</p>
  
  <p>What's up with this? why do I get the errors twice?</p>