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