Test: ml_4

Higher SubleqErrorOutputSubleqITR
int puts(int s);
void main()
{
   puts("hello");
}



hello

   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
   ?+9; sp ?+5; c2 Z; Z 0; Z
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; ?+2 0 _puts; . ?;
   c3 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

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

   t1; t2; bp t1; c3 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

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

   t1; t2; bp t1; c3 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; bp t2; dec t2; t2 t1
   t2; t4; ?+11; t1 Z; Z ?+4; Z; 0 t2; t2 t4
   t1; t3 Z; Z t1; Z; t4 t1
   ax; t1 ax
   Z Z end_puts

end_puts:
   ?+8; sp ?+4; t4; 0 t4; inc sp
   ?+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:0 c1:104 101 108 108 111 0 c2:c1

. t1:0 t2:0 t3:0 t4:0

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

Root (ml_4.hsq:7)
   Function:0 [puts] (ml_4.hsq:1)
      Keyword [int] (ml_4.hsq:1)
      Param-type-list (ml_4.hsq:1)
         Stackvar:-2 [s] (ml_4.hsq:1)
   Function:0 [main] (ml_4.hsq:2)
      Keyword [void] (ml_4.hsq:2)
      Param-type-list (ml_4.hsq:2)
      Block (ml_4.hsq:3)
         Postfix [(] (ml_4.hsq:4)
            Label [puts] (ml_4.hsq:4)
            Expression-list (ml_4.hsq:4)
               String [hello] (ml_4.hsq:4)
   Function:1 [puts] (::puts:1)
      Keyword [int] (::puts:1)
      Param-type-list (::puts:1)
         Stackvar:-2 [s] (::puts:1)
      Block (::puts:2)
         Declaration (::puts:3)
            Keyword [int] (::puts:3)
            Declarator [=] (::puts:3)
               Stackvar:1 [p] (::puts:3)
               Unary [*] (::puts:3) s:1
                  Additive [+] (::puts:3) s:1
                     Variable [@bp] (::puts:3) s:1
                     Const [-2] (::puts:3) s:1
         Keyword-statement [while] (::puts:4)
            Equality [!=] (::puts:4)
               Unary [*] (::puts:4)
                  Unary [*] (::puts:4) s:1
                     Additive [+] (::puts:4) s:1
                        Variable [@bp] (::puts:4) s:1
                        Const [-2] (::puts:4) s:1
               Const [0] (::puts:4)
            OperatorIO [__out] (::puts:4)
               Unary [*] (::puts:4)
                  Postfix [++] (::puts:4)
                     Unary [*] (::puts:4) s:1
                        Additive [+] (::puts:4) s:1
                           Variable [@bp] (::puts:4) s:1
                           Const [-2] (::puts:4) s:1
         Keyword-statement [return] (::puts:5)
            Additive [-] (::puts:5)
               Unary [*] (::puts:5) s:1
                  Additive [+] (::puts:5) s:1
                     Variable [@bp] (::puts:5) s:1
                     Const [-2] (::puts:5) s:1
               Unary [*] (::puts:5) p:3
                  Additive [+] (::puts:5) p:3
                     Variable [@bp] (::puts:5) p:3
                     Const [1] (::puts:5) p:3