GCC allows attributes to be set on C labels. See Attribute Syntax, for details of the exact syntax for using attributes. Other attributes are available for functions (see Function Attributes), variables (see Variable Attributes) and for types (see Type Attributes).
This example uses the cold label attribute to indicate the
ErrorHandling branch is unlikely to be taken and that the
ErrorHandling label is unused:
asm goto ("some asm" : : : : NoError);
/* This branch (the fall-through from the asm) is less commonly used */
ErrorHandling:
__attribute__((cold, unused)); /* Semi-colon is required here */
printf("error\n");
return 0;
NoError:
printf("no error\n");
return 1;
unused#ifdef conditional.
hothot attribute on a label is used to inform the compiler that
the path following the label is more likely than paths that are not so
annotated. This attribute is used in cases where __builtin_expect
cannot be used, for instance with computed goto or asm goto.
coldcold attribute on labels is used to inform the compiler that
the path following the label is unlikely to be executed. This attribute
is used in cases where __builtin_expect cannot be used, for instance
with computed goto or asm goto.