root/usr/src/tools/smatch/src/validation/backend/switch.c
int def(void);
int r0(void);
int r1(void);
int r2(void);
int r3(void);
int r4(void);
int r5(void);
int r6(void);
int r7(void);
int r8(void);
int r9(void);

int small(int a)
{
        switch (a) {
        case 0: return r0();
        case 1: return r1();
        case 2: return r2();
        }

        return def();
}

int densefull(int a)
{
        switch (a) {
        case 0: return r0();
        case 1: return r1();
        case 2: return r2();
        case 3: return r3();
        case 4: return r4();
        case 5: return r5();
        case 6: return r6();
        case 7: return r7();
        case 8: return r8();
        case 9: return r9();
        }

        return def();
}

int densepart(int a)
{
        switch (a) {
        case 0: return r0();
        case 1: return r1();
        case 2: return r2();
        case 3: return r3();
        case 4: return r4();

        case 6: return r6();
        case 7: return r7();
        case 8: return r8();
        case 9: return r9();
        }

        return def();
}

int dense_dense_20(int a)
{
        switch (a) {
        case 0: return r0();
        case 1: return r1();
        case 2: return r2();
        case 3: return r3();
        case 4: return r4();
        case 5: return r5();
        case 6: return r6();
        case 7: return r7();
        case 8: return r8();
        case 9: return r9();

        case 20: return r0();
        case 21: return r1();
        case 22: return r2();
        case 23: return r3();
        case 24: return r4();
        case 25: return r5();
        case 26: return r6();
        case 27: return r7();
        case 28: return r8();
        case 29: return r9();
        }

        return def();
}

int dense_dense_100(int a)
{
        switch (a) {
        case 0: return r0();
        case 1: return r1();
        case 2: return r2();
        case 3: return r3();
        case 4: return r4();
        case 5: return r5();
        case 6: return r6();
        case 7: return r7();
        case 8: return r8();
        case 9: return r9();

        case 100: return r0();
        case 101: return r1();
        case 102: return r2();
        case 103: return r3();
        case 104: return r4();
        case 105: return r5();
        case 106: return r6();
        case 107: return r7();
        case 108: return r8();
        case 109: return r9();
        }

        return def();
}

int dense_dense_1000(int a)
{
        switch (a) {
        case 0: return r0();
        case 1: return r1();
        case 2: return r2();
        case 3: return r3();
        case 4: return r4();
        case 5: return r5();
        case 6: return r6();
        case 7: return r7();
        case 8: return r8();
        case 9: return r9();

        case 1000: return r0();
        case 1001: return r1();
        case 1002: return r2();
        case 1003: return r3();
        case 1004: return r4();
        case 1005: return r5();
        case 1006: return r6();
        case 1007: return r7();
        case 1008: return r8();
        case 1009: return r9();
        }

        return def();
}

int sparse(int a)
{
        switch (a) {
        case 0: return r0();
        case 3: return r1();
        case 12: return r2();
        case 31: return r3();
        case 54: return r4();
        case 75: return r5();
        case 96: return r6();
        case 107: return r7();
        case 189: return r8();
        case 999: return r9();
        }

        return def();
}

int range_simple(int a)
{
        switch (a) {
        case 1 ... 9: return r0();
        }

        return def();
}

int range_complex(int a)
{
        switch (a) {
        case -1: return r0();
        case 1 ... 9: return r0();
        case 10 ... 19: return r1();
        case 200 ... 202: return r2();
        case 300 ... 303: return r3();
        }

        return def();
}

void switch_call(int a)
{
        int r;

        switch (a) {
        case 0: r0(); break;
        case 1: r1(); break;
        case 2: r2(); break;
        case 3: r3(); break;
        case 4: r4(); break;
        case 5: r5(); break;
        case 6: r6(); break;
        case 7: r7(); break;
        case 8: r8(); break;
        case 9: r9(); break;
        }
}

int switch_retcall(int a)
{
        int r = 0;

        switch (a) {
        case 0: r = r0(); break;
        case 1: r = r1(); break;
        case 2: r = r2(); break;
        case 3: r = r3(); break;
        case 4: r = r4(); break;
        case 5: r = r5(); break;
        case 6: r = r6(); break;
        case 7: r = r7(); break;
        case 8: r = r8(); break;
        case 9: r = r9(); break;
        }

        return r;
}

int switch_cmov(int a)
{
        int r;

        switch (a) {
        case 0: r = 3; break;
        case 1: r = 1; break;
        case 2: r = 7; break;
        case 3: r = 2; break;
        case 4: r = 9; break;

        case 6: r = 5; break;
        case 7: r = 8; break;
        case 8: r = 6; break;
        case 9: r = 4; break;
        }

        return r;
}

/*
 * check-name: llvm-switch
 * check-command: sparsec -Wno-decl -c $file -o tmp.o
 */