Как обсуждалось в этом вопросе, GCC определяет нестандартный унарный оператор &&, чтобы взять адрес метки.
Почему он определяет новый оператор вместо использования существующей семантики оператора & и/или семантики функций (где foo и &foo оба дают адрес функции foo())?