#include <stdio.h>

void foo(int i)
{
    static const void *sw[] = { &&lab_0, &&lab_1, &&lab_2 };
    
    if (i < 0 || i >= sizeof(sw)/sizeof(*sw)) {
        printf("out of range\n");
        return;
    }
    
    goto *sw[i];

lab_0:
    printf("lab_0\n");
    return;
    
lab_1:
    printf("lab_1\n");
    return;

lab_2:
    printf("lab_2\n");
    return;

}

int main(void) {
	for (int i = -1; i < 4; ++i)
	    foo(i);
	return 0;
}
