Test: mg_13

Higher SubleqErrorOutputSubleqITR
int a,b=50;
int main()
{
   a = b;
   a -= 1;
   a += 2;
   __out a;

   int a,b=50;

   a = b;
   a -= 1;
   a += 3;
   __out a;
}


34

   top:top top sqmain

.  _a:0 _b:50

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

   _a; _b Z; Z _a; Z

   dec _a

   c1 Z; Z _a; Z

   _a (-1)

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

   t1; t2; bp t1; c1 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; bp t2; dec t2; t2 t1
   ?+23; ?+21; ?+24; t1 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; t3 Z; Z 0; Z

   t1; t2; bp t1; dec t1; t1 t2
   ?+12; t2 Z; Z ?+5; Z; dec 0

   t1; t2; bp t1; dec t1; t1 t2
   ?+15; t2 Z; Z ?+8; Z
   c3 Z; Z 0; Z

   t1; t2; bp t1; dec t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t3 (-1)

   ?+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:2 c3:3 c2:50

. t1:0 t2:0 t3:0

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

Root (mg_13.hsq:16)
   Declaration (mg_13.hsq:1)
      Keyword [int] (mg_13.hsq:1)
      Declarator [0] (mg_13.hsq:1)
         Id [a] (mg_13.hsq:1)
      Declarator [=] (mg_13.hsq:1)
         Id [b] (mg_13.hsq:1)
         Const [50] (mg_13.hsq:1)
   Function:2 [main] (mg_13.hsq:2)
      Keyword [int] (mg_13.hsq:2)
      Param-type-list (mg_13.hsq:2)
      Block (mg_13.hsq:3)
         Assignment [=] (mg_13.hsq:4)
            Variable [a] (mg_13.hsq:4) 0:1
            Variable [b] (mg_13.hsq:4) =:1
         Assignment [-=] (mg_13.hsq:5)
            Variable [a] (mg_13.hsq:5) 0:1
            Const [1] (mg_13.hsq:5)
         Assignment [+=] (mg_13.hsq:6)
            Variable [a] (mg_13.hsq:6) 0:1
            Const [2] (mg_13.hsq:6)
         OperatorIO [__out] (mg_13.hsq:7)
            Variable [a] (mg_13.hsq:7) 0:1
         Declaration (mg_13.hsq:9)
            Keyword [int] (mg_13.hsq:9)
            Declarator [0] (mg_13.hsq:9)
               Stackvar:1 [a] (mg_13.hsq:9)
            Declarator [=] (mg_13.hsq:9)
               Stackvar:2 [b] (mg_13.hsq:9)
               Const [50] (mg_13.hsq:9)
         Assignment [=] (mg_13.hsq:11)
            Unary [*] (mg_13.hsq:11) a:9
               Additive [+] (mg_13.hsq:11) a:9
                  Variable [@bp] (mg_13.hsq:11) a:9
                  Const [1] (mg_13.hsq:11) a:9
            Unary [*] (mg_13.hsq:11) b:9
               Additive [+] (mg_13.hsq:11) b:9
                  Variable [@bp] (mg_13.hsq:11) b:9
                  Const [2] (mg_13.hsq:11) b:9
         Assignment [-=] (mg_13.hsq:12)
            Unary [*] (mg_13.hsq:12) a:9
               Additive [+] (mg_13.hsq:12) a:9
                  Variable [@bp] (mg_13.hsq:12) a:9
                  Const [1] (mg_13.hsq:12) a:9
            Const [1] (mg_13.hsq:12)
         Assignment [+=] (mg_13.hsq:13)
            Unary [*] (mg_13.hsq:13) a:9
               Additive [+] (mg_13.hsq:13) a:9
                  Variable [@bp] (mg_13.hsq:13) a:9
                  Const [1] (mg_13.hsq:13) a:9
            Const [3] (mg_13.hsq:13)
         OperatorIO [__out] (mg_13.hsq:14)
            Unary [*] (mg_13.hsq:14) a:9
               Additive [+] (mg_13.hsq:14) a:9
                  Variable [@bp] (mg_13.hsq:14) a:9
                  Const [1] (mg_13.hsq:14) a:9