Test: mg_3

Higher SubleqErrorOutputSubleqITR
int * i = "aBc";
int f();
void main()
{
   __out *(i+1);

   int v1='A';
   void * v2 = &v1;
   void ** v3 = &v2;
   __out **v3;
}


BA

   top:top top sqmain

.  _i:c1

_main:
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; bp 0
   bp; sp bp
   c4 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; _i t1; dec t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t3 (-1)

   t1; t2; bp t1; dec 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; dec t1; t1 t2
   t1; t3; bp t1; c3 t1; t1 t3
   ?+23; ?+21; ?+24; t3 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; t2 Z; Z 0; Z

   t1; t2; bp t1; c3 t1; t1 t2
   t1; t3; bp t1; c4 t1; t1 t3
   ?+23; ?+21; ?+24; t3 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; t2 Z; Z 0; Z

   t1; t2; bp t1; c4 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; ?+11; t3 Z; Z ?+4; Z; 0 t2; t2 t1
   t3; t2; ?+11; t1 Z; Z ?+4; Z; 0 t3; t3 t2
   t2 (-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)

. c3:2 c4:3 c2:65 c1:97 66 99 0

. t1:0 t2:0 t3:0

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

Root (mg_3.hsq:12)
   Declaration (mg_3.hsq:1)
      Keyword [int] (mg_3.hsq:1)
      Declarator [=] (mg_3.hsq:1)
         Id [i] (mg_3.hsq:1)
         String [aBc] (mg_3.hsq:1)
   Function:0 [f] (mg_3.hsq:2)
      Keyword [int] (mg_3.hsq:2)
      Param-type-list (mg_3.hsq:2)
   Function:3 [main] (mg_3.hsq:3)
      Keyword [void] (mg_3.hsq:3)
      Param-type-list (mg_3.hsq:3)
      Block (mg_3.hsq:4)
         OperatorIO [__out] (mg_3.hsq:5)
            Unary [*] (mg_3.hsq:5)
               Additive [+] (mg_3.hsq:5)
                  Variable [i] (mg_3.hsq:5) =:1
                  Const [1] (mg_3.hsq:5)
         Declaration (mg_3.hsq:7)
            Keyword [int] (mg_3.hsq:7)
            Declarator [=] (mg_3.hsq:7)
               Stackvar:1 [v1] (mg_3.hsq:7)
               Const ['A'] (mg_3.hsq:7)
         Declaration (mg_3.hsq:8)
            Keyword [void] (mg_3.hsq:8)
            Declarator [=] (mg_3.hsq:8)
               Stackvar:2 [v2] (mg_3.hsq:8)
               Additive [+] (mg_3.hsq:8) v1:7
                  Variable [@bp] (mg_3.hsq:8) v1:7
                  Const [1] (mg_3.hsq:8) v1:7
         Declaration (mg_3.hsq:9)
            Keyword [void] (mg_3.hsq:9)
            Declarator [=] (mg_3.hsq:9)
               Stackvar:3 [v3] (mg_3.hsq:9)
               Additive [+] (mg_3.hsq:9) v2:8
                  Variable [@bp] (mg_3.hsq:9) v2:8
                  Const [2] (mg_3.hsq:9) v2:8
         OperatorIO [__out] (mg_3.hsq:10)
            Unary [*] (mg_3.hsq:10)
               Unary [*] (mg_3.hsq:10)
                  Unary [*] (mg_3.hsq:10) v3:9
                     Additive [+] (mg_3.hsq:10) v3:9
                        Variable [@bp] (mg_3.hsq:10) v3:9
                        Const [3] (mg_3.hsq:10) v3:9