Существует расширение GNU, которое позволяет взять адрес метки, сохранить ее для последующего использования, а затем goto
этот адрес на более позднем этапе. Подробнее см. https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html. Пример:
void *ptr;
if(...)
ptr = &&foo;
else
ptr = &&bar;
/* ... */
goto *ptr;
foo:
/* ... */
bar:
/* ... */
Clang также поддерживает это, поскольку стремится быть совместимым с GCC.
Использование вышеперечисленного может быть, например, при реализации конечных автоматов.