diff test/tmp6.c @ 0:d35df41eac69

Initial revision
author kono
date Thu, 13 Jan 2000 02:41:41 +0900
parents
children bf602558130d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tmp6.c	Thu Jan 13 02:41:41 2000 +0900
@@ -0,0 +1,71 @@
+#include "stdio.h"
+
+int
+main(ac,av)
+int ac;
+char *av[];
+{
+    int i;
+
+    if(ac!=2)	
+	return(0);
+    i=main0(ac,av,return,environment);
+    fprintf(stderr,"1: %s %d\n",av[0],i);
+    return i;
+}
+
+int
+main0(ac,av,ret,retenv)
+int ac;
+char *av[];
+code (*ret)();
+void *retenv;
+{
+    int i,j,k;
+    i=123;
+    j=456;
+    k = atoi(av[1]);
+    fprintf(stderr,"2: av=%x av[0]=%x %s\n",av,av[0],av[0]);
+    goto code0(i,j,k,av,ret,retenv,return,environment);
+}
+
+code code0(i,j,k,av,ret,retenv,ret1,ret1env)
+int i,j,k;
+char *av[];
+code (*ret)();
+void *retenv;
+code (*ret1)();
+void *ret1env;
+{
+    char *p;
+    p = av[0];
+    fprintf(stderr,"3: i=%d j=%d k=%d av=%x p=%s\n",i,j,k,av,p);
+    goto code1(i,j,k,av,ret,retenv,ret1,ret1env);
+}
+
+code code1(i,j,k,av,ret,retenv,ret1,ret1env)
+int i,j,k;
+char *av[];
+code (*ret)();
+void *retenv;
+code (*ret1)();
+void *ret1env;
+{
+    fprintf(stderr,"4: %s\n",av[0]);
+    goto code2(i,j,k,av,ret,retenv,ret1,ret1env);
+}
+
+code code2(i,j,k,av,ret,retenv,ret1,ret1env)
+int i,j,k;
+char *av[];
+code (*ret)();
+void *retenv;
+code (*ret1)();
+void *ret1env;
+{
+    fprintf(stderr,"5: %s\n",av[0]);
+    fprintf(stderr,"5: i=%d j=%d k=%d av=%x\n",i,j,k,av);
+    if (k>3)
+	goto (*ret1)(1234),ret1env;
+    goto (*ret)(1234),retenv;
+}