Marc:
The documentation says:
The default declarations used by the compiler are equivalent to:
(declare (ieee-scheme) (separate) (inline) (inlining-limit 300) (constant-fold) (lambda-lift) (not standard-bindings) (not extended-bindings) (not run-time-bindings) (safe) (interrupts-enabled) (generic) (mostly-fixnum) )
but it appears that standard-bindings is also assumed, by the following test. I think this is a bug.
Brad
[descartes:~] lucier% gsc -c -expansion test.scm loading /usr/local/Gambit-C/gambcext.scm Expansion:
(define a (lambda (b) (if (##pair? b) (##car b) (car b))))
[descartes:~] lucier% cat test.scm (define (a b) (car b)) [descartes:~] lucier% cat test.c <stuff deleted> #undef ___PH_PROC #define ___PH_PROC ___H_a #undef ___PH_LBL0 #define ___PH_LBL0 3 #undef ___PD_ALL #define ___PD_ALL ___D_FP ___D_R0 ___D_R1 ___D_R4 #undef ___PR_ALL #define ___PR_ALL ___R_FP ___R_R0 ___R_R1 ___R_R4 #undef ___PW_ALL #define ___PW_ALL ___W_R1 ___W_R4 ___BEGIN_P_COD ___BEGIN_P_HLBL ___DEF_P_HLBL_INTRO ___DEF_P_HLBL(___L0_a) ___DEF_P_HLBL(___L1_a) ___END_P_HLBL ___BEGIN_P_SW ___DEF_SLBL(0,___L0_a) ___IF_NARGS_EQ(1,___NOTHING) ___WRONG_NARGS(0,1,0,0) ___DEF_GLBL(___L_a) ___IF(___PAIRP(___R1)) ___GOTO(___L2_a) ___END_IF ___POLL(1) ___DEF_SLBL(1,___L1_a) ___JUMPGLOSAFE(___SET_NARGS(1),2,___G_car) ___DEF_GLBL(___L2_a) ___SET_R1(___CAR(___R1)) ___JUMPPRM(___NOTHING,___R0) ___END_P_SW ___END_P_COD
Afficher les réponses par date