#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %switch test1 ( -1 : -1 )
int TEST1_index;
int TEST1_line;
char *TEST1_file;
static const void *TEST1[1] = {&&case_TEST1_M1};
// 3 %switch test2 ( -1 : 0 )
int TEST2_index;
int TEST2_line;
char *TEST2_file;
static const void *TEST2[2] = {&&case_TEST2_default, &&case_TEST2_0};
// 4 %switch test3 ( -1 : 1 )
int TEST3_index;
int TEST3_line;
char *TEST3_file;
static const void *TEST3[3] = {&&case_TEST3_missing, &&case_TEST3_missing, &&case_TEST3_1};
// 5 %integer i = 0
int I;
I = 0;
// 6
// 7 ->test2(i)
TEST2_line = __LINE__;
TEST2_file = __FILE__;
TEST2_index = I;
goto case_TEST2_dispatch;
// 8
// 9 test2(0):
case_TEST2_0:;
// 10 test2(*):
case_TEST2_default:;
// 11 test3(1):
case_TEST3_1:;
// 12 test1(-1):
case_TEST1_M1:;
// 13
// 14 %endofprogram
_imp_stop(0);
return 0;
case_TEST1_dispatch:
if (TEST1_index < -1 || TEST1_index > -1)
_imp_signalf(6, 3, TEST1_index, "->TEST1(%d) out of bounds at %s line %d", TEST1_index, TEST1_file, TEST1_line);
goto *TEST1[TEST1_index - -1];
case_TEST2_dispatch:
if (TEST2_index < -1 || TEST2_index > 0)
_imp_signalf(6, 3, TEST2_index, "->TEST2(%d) out of bounds at %s line %d", TEST2_index, TEST2_file, TEST2_line);
goto *TEST2[TEST2_index - -1];
case_TEST3_dispatch:
if (TEST3_index < -1 || TEST3_index > 1)
_imp_signalf(6, 3, TEST3_index, "->TEST3(%d) out of bounds at %s line %d", TEST3_index, TEST3_file, TEST3_line);
goto *TEST3[TEST3_index - -1];
case_TEST3_missing:
_imp_signalf(8, 2, TEST3_index, "switch jump to undefined label TEST3(%d): at %s line %d", TEST3_index, TEST3_file,
TEST3_line);
end_0:;
}