# HG changeset patch # User mir3636 # Date 1540422520 -32400 # Node ID e108057fa461d2c2bb4852fa71b069540a637a7c # Parent fe568345ddd579e91aeb5e6f071523e123b5c232# Parent 002ebcbc1eb45367786af9ea2728058b45fe7e73 merge diff -r fe568345ddd5 -r e108057fa461 CbC-examples/test_env.c --- a/CbC-examples/test_env.c Wed Apr 11 19:32:28 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -extern int printf(const char*, ...); - -typedef void (*RET_FUNC)(int, void *); -int f(); - -int main(int argc, char **argv) -{ - int r; - r = f(); - printf("%d\n", r); -} - -//void z(RET_FUNC ret, void *fp) -__code z(RET_FUNC ret, void *fp) -{ - printf("z: fp=0x%x\n", __builtin_frame_address(0)); - ret(5, fp); -} -__code i(RET_FUNC ret, void *fp) -{ - printf("i: fp=0x%x\n", __builtin_frame_address(0)); - goto z(ret, fp); -} -__code h(RET_FUNC ret, void *fp) -{ - printf("h: fp=0x%x\n", __builtin_frame_address(0)); - goto i(ret, fp); -} -__code g(RET_FUNC ret, void *fp) -{ - printf("g: fp=0x%x\n", __builtin_frame_address(0)); - goto h(ret, fp); -} - -int f() -{ - __label__ exit0; - int retval; - //void (*ret)(int retval_, void *fp); - - /* - ret = ({ - void __return_func(int retval_, void *fp){ - retval = retval_; - goto exit0; - } - __return_func; - }); - */ - printf("f0: fp = 0x%x\n", __builtin_frame_address(0)); - void __return_func(int retval_, void *fp){ - retval = retval_; - goto exit0; - } - //ret = __return_func; - - printf("f1: fp = 0x%x\n", __builtin_frame_address(0)); - - //g(__return_func, __builtin_frame_address(0)); - goto g(__return_func, __builtin_frame_address(0)); - - printf("bad\n"); - -exit0: - printf("f2: fp = 0x%x\n", __builtin_frame_address(0)); - return retval; -} - - -