Test: mg_18_8

Higher SubleqErrorOutputSubleqITR
void main()
{
   int a=1,b=0,c=-1;
   if( !a ) __out 48;
   if( !b ) __out 55;
   if( !c ) __out 56;
}


7

   top:top top sqmain

_main:
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; bp 0
   bp; sp bp
   c3 sp
   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
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t3 0

   t1; t2; bp t1; dec t1; t1 t2
   ?+23; ?+21; ?+24; t2 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; dec Z; Z 0; Z
   t2; t1; bp t2; c2 t2; t2 t1
   ?+23; ?+21; ?+24; t1 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; c1 Z; Z 0; Z
   t1; t2; bp t1; c3 t1; t1 t2
   ?+23; ?+21; ?+24; t2 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; inc Z; Z 0; Z

   t1; t2; bp t1; dec t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t3 Z; Z t2 ?+3; Z Z ?+9; Z; t3 t2; t3 t2
   t3; t2 t3; inc t3
   Z t3 l1
   c4 (-1)
l1:

   t1; t2; bp t1; c2 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t3 Z; Z t2 ?+3; Z Z ?+9; Z; t3 t2; t3 t2
   t3; t2 t3; inc t3
   Z t3 l2
   c5 (-1)
l2:

   t1; t2; bp t1; c3 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t3 Z; Z t2 ?+3; Z Z ?+9; Z; t3 t2; t3 t2
   t3; t2 t3; inc t3
   Z t3 l3
   c6 (-1)
l3:

   ?+8; sp ?+4; t3; 0 t3; inc sp
   ?+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

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

   Z Z (-1)

. c1:0 c2:2 c3:3 c4:48 c5:55 c6:56

. t1:0 t2:0 t3:0

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

Root (mg_18_8.hsq:8)
   Function:3 [main] (mg_18_8.hsq:1)
      Keyword [void] (mg_18_8.hsq:1)
      Param-type-list (mg_18_8.hsq:1)
      Block (mg_18_8.hsq:2)
         Declaration (mg_18_8.hsq:3)
            Keyword [int] (mg_18_8.hsq:3)
            Declarator [=] (mg_18_8.hsq:3)
               Stackvar:1 [a] (mg_18_8.hsq:3)
               Const [1] (mg_18_8.hsq:3)
            Declarator [=] (mg_18_8.hsq:3)
               Stackvar:2 [b] (mg_18_8.hsq:3)
               Const [0] (mg_18_8.hsq:3)
            Declarator [=] (mg_18_8.hsq:3)
               Stackvar:3 [c] (mg_18_8.hsq:3)
               Const [-1] (mg_18_8.hsq:3)
         Keyword-statement [if] (mg_18_8.hsq:4)
            Unary [!] (mg_18_8.hsq:4)
               Equality [!=] (mg_18_8.hsq:4)
                  Unary [*] (mg_18_8.hsq:4) a:3
                     Additive [+] (mg_18_8.hsq:4) a:3
                        Variable [@bp] (mg_18_8.hsq:4) a:3
                        Const [1] (mg_18_8.hsq:4) a:3
                  Const [0] (mg_18_8.hsq:4)
            OperatorIO [__out] (mg_18_8.hsq:4)
               Const [48] (mg_18_8.hsq:4)
         Keyword-statement [if] (mg_18_8.hsq:5)
            Unary [!] (mg_18_8.hsq:5)
               Equality [!=] (mg_18_8.hsq:5)
                  Unary [*] (mg_18_8.hsq:5) b:3
                     Additive [+] (mg_18_8.hsq:5) b:3
                        Variable [@bp] (mg_18_8.hsq:5) b:3
                        Const [2] (mg_18_8.hsq:5) b:3
                  Const [0] (mg_18_8.hsq:5)
            OperatorIO [__out] (mg_18_8.hsq:5)
               Const [55] (mg_18_8.hsq:5)
         Keyword-statement [if] (mg_18_8.hsq:6)
            Unary [!] (mg_18_8.hsq:6)
               Equality [!=] (mg_18_8.hsq:6)
                  Unary [*] (mg_18_8.hsq:6) c:3
                     Additive [+] (mg_18_8.hsq:6) c:3
                        Variable [@bp] (mg_18_8.hsq:6) c:3
                        Const [3] (mg_18_8.hsq:6) c:3
                  Const [0] (mg_18_8.hsq:6)
            OperatorIO [__out] (mg_18_8.hsq:6)
               Const [56] (mg_18_8.hsq:6)