def test_stack_varargs2(self):
    self.set_setting('TOTAL_STACK', (8 * 1024))
    src = '\n      #include <stdio.h>\n      #include <stdlib.h>\n\n      void func(int i) {\n      }\n      int main() {\n        for (int i = 0; i < 7000; i++) {\n          printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\\n",\n                   i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i);\n        }\n        printf("ok!\\n");\n        return 0;\n      }\n    '
    self.do_run(src, 'ok!')
    print('with return')
    src = '\n      #include <stdio.h>\n      #include <stdlib.h>\n\n      int main() {\n        for (int i = 0; i < 7000; i++) {\n          int j = printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",\n                   i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i);\n          printf(" (%d)\\n", j);\n        }\n        printf("ok!\\n");\n        return 0;\n      }\n    '
    self.do_run(src, 'ok!')
    print('with definitely no return')
    src = '\n      #include <stdio.h>\n      #include <stdlib.h>\n      #include <stdarg.h>\n\n      void vary(const char *s, ...)\n      {\n        va_list v;\n        va_start(v, s);\n        char d[20];\n        vsnprintf(d, 20, s, v);\n        puts(d);\n\n        // Try it with copying\n        va_list tempva;\n        va_copy(tempva, v);\n        vsnprintf(d, 20, s, tempva);\n        puts(d);\n\n        va_end(v);\n      }\n\n      int main() {\n        for (int i = 0; i < 7000; i++) {\n          int j = printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",\n                   i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i);\n          printf(" (%d)\\n", j);\n          vary("*cheez: %d+%d*", 99, 24);\n          vary("*albeit*");\n        }\n        printf("ok!\\n");\n        return 0;\n      }\n    '
    self.do_run(src, 'ok!')
def test_stack_varargs2(self):
    self.set_setting('TOTAL_STACK', (8 * 1024))
    src = '\n      #include <stdio.h>\n      #include <stdlib.h>\n\n      void func(int i) {\n      }\n      int main() {\n        for (int i = 0; i < 7000; i++) {\n          printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\\n",\n                   i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i);\n        }\n        printf("ok!\\n");\n        return 0;\n      }\n    '
    self.do_run(src, 'ok!')
    print('with return')
    src = '\n      #include <stdio.h>\n      #include <stdlib.h>\n\n      int main() {\n        for (int i = 0; i < 7000; i++) {\n          int j = printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",\n                   i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i);\n          printf(" (%d)\\n", j);\n        }\n        printf("ok!\\n");\n        return 0;\n      }\n    '
    self.do_run(src, 'ok!')
    print('with definitely no return')
    src = '\n      #include <stdio.h>\n      #include <stdlib.h>\n      #include <stdarg.h>\n\n      void vary(const char *s, ...)\n      {\n        va_list v;\n        va_start(v, s);\n        char d[20];\n        vsnprintf(d, 20, s, v);\n        puts(d);\n\n        // Try it with copying\n        va_list tempva;\n        va_copy(tempva, v);\n        vsnprintf(d, 20, s, tempva);\n        puts(d);\n\n        va_end(v);\n      }\n\n      int main() {\n        for (int i = 0; i < 7000; i++) {\n          int j = printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",\n                   i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i);\n          printf(" (%d)\\n", j);\n          vary("*cheez: %d+%d*", 99, 24);\n          vary("*albeit*");\n        }\n        printf("ok!\\n");\n        return 0;\n      }\n    '
    self.do_run(src, 'ok!')