changeset 119:9d1ff3ae1824

fix conv1 example
author kono
date Thu, 08 Mar 2018 12:20:02 +0900
parents fd00160c1b76
children f93fa5091070
files CbC-examples/conv1.c
diffstat 1 files changed, 28 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/CbC-examples/conv1.c	Tue Feb 27 15:01:35 2018 +0900
+++ b/CbC-examples/conv1.c	Thu Mar 08 12:20:02 2018 +0900
@@ -1,5 +1,7 @@
 #include "stdio.h"
 
+extern int atoi (const char *);
+
 static int loop;
 
 #if 1 // def __micro_c__
@@ -9,7 +11,10 @@
 #endif
 
 /* classical function call case (0) */
+int g0(int);
+int h0(int);
 
+int
 f0(int i) {
     int k,j;
     k = 3+i;
@@ -17,10 +22,12 @@
     return k+4+j;
 }
 
+int
 g0(int i) {
     return h0(i+4)+i;
 }
 
+int
 h0(int i) {
     return i+4;
 }
@@ -29,12 +36,25 @@
 
 /* straight conversion case (1) */
 
-typedef char *stack;
+typedef void *stack;
 
 struct cont_interface { // General Return Continuation
     __code (*ret)(int, void *);
 };
 
+#ifndef __llvm__ 
+__code f_g0(int i,int k,stack sp);
+__code f_g1(int j,stack sp);
+__code g(int i,stack sp);
+__code h(int i,stack sp);
+__code f2(int i,char *sp);
+__code g2(int i,int k,int j,char *sp);
+__code h2(int i,int k,char *sp);
+__code main_return2(int i,stack sp);
+__code g2_1(int k,int i,stack *sp);
+__code h2_11(int i,int k,stack *sp);
+#endif
+
 __code f(int i,stack sp) {
     int k,j;
     k = 3+i;
@@ -137,26 +157,26 @@
 
 /* little optimizaed case (3) */
 
-__code f2_1(int i,char *sp) {
+__code f2_1(int i,stack *sp) {
     int k,j;
     k = 3+i;
     goto g2_1(k,i+3,sp);
 }
 
-__code g2_1(int k,int i,char *sp) {
+__code g2_1(int k,int i,stack *sp) {
     goto h2_11(k,i+4,sp);
 }
 
-__code f2_0_1(int k,int j,char *sp);
-__code h2_1_1(int i,int k,int j,char *sp) {
+__code f2_0_1(int k,int j,stack *sp);
+__code h2_1_1(int i,int k,int j,stack *sp) {
     goto f2_0_1(k,i+j,sp);
 }
 
-__code h2_11(int i,int k,char *sp) {
+__code h2_11(int i,int k,stack *sp) {
     goto h2_1_1(i,k,i+4,sp);
 }
 
-__code f2_0_1(int k,int j,char *sp) {
+__code f2_0_1(int k,int j,stack *sp) {
     goto (( (struct cont_interface *)sp)->ret)(k+4+j,sp);
 }
 
@@ -176,6 +196,7 @@
 
 #define LOOP_COUNT 10000000
 
+int
 main(int ac,char *av[])
 {
 #if !CC_ONLY