Test: mt_1

Higher SubleqErrorOutputSubleqITR
/*
   "auto",      "enum",      "restrict",      "unsigned",
   "break",   "extern",   "return",      "void",
   "case",      "float",   "short",      "volatile",
   "char",      "for",      "signed",      "while",
   "const",   "goto",      "sizeof",      "_Bool",
   "continue",   "if",      "static",      "_Complex",
   "default",   "inline",   "struct",      "_Imaginary",
   "do",      "int",      "switch",      "__out",
   "double",   "long",      "typedef",      "__in",
   "else",      "register",   "union",      "__asm"
*/

extern int i;

void main()
{
   for(;;){ break; }
   while(0);
   goto lab;
lab:
   for( i=50; i<55; i++ )
   {
      if( i>52 ) break;
      else continue;
      i = __in;
   }

   __out i;
   return;
}

int i;


5

   top:top top sqmain

_main:
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; bp 0
   bp; sp bp
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t1 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t2 0

l1:
   t1; dec Z; Z t1 ?+3; Z Z ?+9; Z; dec t1; dec t1
   Z t1 l3
   Z Z l3


l2:
   Z Z l1
l3:

l4:
   t1; c1 Z; Z t1 ?+3; Z Z ?+9; Z; c1 t1; c1 t1
   Z t1 l5
   Z Z l4
l5:

   Z Z l_main_lab

l_main_lab:
   _i; c2 Z; Z _i; Z
l6:
   t1; c3 Z; Z t1; Z; _i t1
   Z t1 l8
   t2; _i Z; Z t2; Z; c4 t2
   Z t2 l9
   Z Z l8

   Z Z l10
l9:
   Z Z l7

l10:

   t1; (-1) t1
   _i; t1 Z; Z _i; Z

l7:
   inc _i
   Z Z l6
l8:

   _i (-1)

   Z Z end_main

end_main:
   ?+8; sp ?+4; t2; 0 t2; inc sp
   ?+8; sp ?+4; t1; 0 t1; inc sp
   sp; bp sp
   ?+8; sp ?+4; bp; 0 bp; inc sp
   ?+8; sp ?+4; ?+7; 0 ?+3; Z Z 0

.  _i:0

sqmain:
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; ?+2 0 _main; . ?; inc sp

   Z Z (-1)

. c1:0 c2:50 c4:52 c3:55

. t1:0 t2:0

. inc:-1 Z:0 dec:1 ax:0 bp:0 sp:-sp

Root (mt_1.hsq:34)
   Declaration [extern] (mt_1.hsq:14)
      Keyword [int] (mt_1.hsq:14)
      Id [i] (mt_1.hsq:14)
   Function:0 [main] (mt_1.hsq:16)
      Keyword [void] (mt_1.hsq:16)
      Param-type-list (mt_1.hsq:16)
      Block (mt_1.hsq:17)
         Keyword-statement [for] (mt_1.hsq:18)
            Statement [;] (mt_1.hsq:18)
            Equality [!=] (mt_1.hsq:18)
               Const [1] (:0)
               Const [0] (mt_1.hsq:18)
            Const [0] (:0)
            Block (mt_1.hsq:18)
               Keyword-statement [break] (mt_1.hsq:18)
         Keyword-statement [while] (mt_1.hsq:19)
            Equality [!=] (mt_1.hsq:19)
               Const [0] (mt_1.hsq:19)
               Const [0] (mt_1.hsq:19)
            Statement [;] (mt_1.hsq:19)
         Keyword-statement [goto] (mt_1.hsq:20)
            Label [lab] (mt_1.hsq:20) lab:21
         Label-statement [lab] (mt_1.hsq:21)
            Keyword-statement [for] (mt_1.hsq:22)
               Assignment [=] (mt_1.hsq:22)
                  Variable [i] (mt_1.hsq:22) 0:33
                  Const [50] (mt_1.hsq:22)
               Relational [<] (mt_1.hsq:22)
                  Variable [i] (mt_1.hsq:22) 0:33
                  Const [55] (mt_1.hsq:22)
               Postfix [++] (mt_1.hsq:22)
                  Variable [i] (mt_1.hsq:22) 0:33
               Block (mt_1.hsq:23)
                  Keyword-statement [if] (mt_1.hsq:24)
                     Relational [>] (mt_1.hsq:24)
                        Variable [i] (mt_1.hsq:24) 0:33
                        Const [52] (mt_1.hsq:24)
                     Keyword-statement [break] (mt_1.hsq:24)
                     Keyword-statement [continue] (mt_1.hsq:25)
                  Assignment [=] (mt_1.hsq:26)
                     Variable [i] (mt_1.hsq:26) 0:33
                     OperatorIO [__in] (mt_1.hsq:26)
         OperatorIO [__out] (mt_1.hsq:29)
            Variable [i] (mt_1.hsq:29) 0:33
         Keyword-statement [return] (mt_1.hsq:30)
   Declaration (mt_1.hsq:33)
      Keyword [int] (mt_1.hsq:33)
      Declarator [0] (mt_1.hsq:33)
         Id [i] (mt_1.hsq:33)