Etiquetas en el ensamblaje en línea GCC

En mi experimentación en curso con el ensamblaje en línea de GCC, me he encontrado con un nuevo problema con respecto a las etiquetas y el código en línea.

Considere el siguiente salto simple:

__asm__
(
    "jmp out;"
    "out:;"
    :
    :
);

Esto no hace nada excepto saltar alout etiqueta. Como es, este código se compila bien. Pero si lo coloca dentro de una función y luego compila con indicadores de optimización, el compilador se queja: "Error: el símbolo 'out' ya está definido".

Lo que parece estar sucediendo es que el compilador repite este código de ensamblaje cada vez que incorpora la función. Esto hace que la etiquetaout duplicarse, lo que lleva a múltiplesout etiquetas.

Entonces, ¿cómo puedo solucionar esto? ¿Realmente no es posible usar etiquetas en el ensamblaje en línea? Estatutorial sobre ensamblaje en línea GCC menciona que:

Por lo tanto, puede poner su ensamblaje en macros CPP y funciones C en línea, para que cualquiera pueda usarlo como cualquier función / macro C. Las funciones en línea se parecen mucho a las macros, pero a veces son más limpias de usar. Tenga en cuenta que en todos esos casos, el código se duplicará, por lo que soloetiquetas locales (de 1: estilo) debe definirse en ese código asm.

Traté de encontrar más información sobre estas "etiquetas locales", pero parece que no puedo encontrar nada relacionado con el ensamblaje en línea. Parece que el tutorial dice que una etiqueta local es un número seguido de dos puntos (como1:), así que intenté usar una etiqueta como esa. Curiosamente, el código se compiló, pero en tiempo de ejecución simplemente activó una falla de segmentación. Hmm ...

¿Alguna sugerencia, sugerencia, respuesta ...?