Label as Values and Interpreter Optimizations
The GNU Compiler supports since several releases a unofficial C feature called “Label as Values”:http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html. This feature offers the ability to retrieve the address of a label and use it in a unconditional branch construct. foo, bar and hack are labels: static void \*array[] = { &&foo, &&bar, &&hack }; [...] goto \*array[i]; The saved condition comes with its one costs: this form is not simple to read compared to simple switch/case statements, especially in real world examples....