Mercurial > hg > CbC > CbC_gcc
view CbC-examples/test_para2.c @ 66:b362627d71ba
bug-fix: modify tail-call-optimization enforcing rules. (calls.c.)
author | Ryoma SHINYA <shinya@firefly.cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 14 Dec 2010 03:58:33 +0900 |
parents | 4c6926a2b9bc |
children |
line wrap: on
line source
#include<stdio.h> #include<stdlib.h> __code cs_end(int a){ printf("cs_exit : a=%d.\n", a); exit(a); } __code cs0(int a, int b, int c, int d); __code cs_goto(int a, int b, int c, int d){ //printf("cs_goto : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d.\n", a, b, c, d, e, f, g); printf("cs_goto : a=%d, b=%d, c=%d, d=%d.\n", a, b, c, d); //printf("cs_goto : a-4=%d, a-8=%d, a-12=%d, a-16=%d.\n", *(&a-4), *(&a-8), *(&a-12), *(&a-16)); //printf("cs_goto : cs0(a, b, c, d)\n"); goto cs0(b, c, d, a); } __code cs0(int a, int b, int c, int d){ //printf("cs0 : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d.\n", a, b, c, d, e, f, g); printf("cs_cs0 : a=%d, b=%d, c=%d, d=%d.\n", a, b, c, d); goto cs_end( (int)(20*a + 30*b + 40*c + 50*d) ); } int function(double a, float b, int c){ //printf("function:\n"); //printf("a=%lf, b=%f, c=%d\n", a, b, c); //goto cs_goto(10, 20, 30, 40); goto cs_goto(10, 20, 30, 40); } int main(int argc, char **argv){ function(10.01, 20.02, 30); return 0; }