最小再現コード
(letrec ([xx (lambda (k) (k) (xx (lambda () (yy))))] [yy (lambda () (cons '() (yy)))]) (xx (lambda () #f)))
バグの内容
無限ループになるはずが *** ERROR: vector required, but got () とエラーになる。
参考:Gauche が吐く最適化済みコード
($letrec ((yy[2;0] ($lambda[yy;0] () ($asm (CONS) ($const ()) ($call[local] ($lref yy[2;0]))))) ) ($call[embed] ($lambda[xx;2] (k[1;0]) ($label #0 ($seq ($call ($lref k[1;0])) ($call[jump] ($call[embed] ($lambda[xx;2] (k[1;0]) label#0) ($lambda[#f;0] () ($const #f))) ($lambda[#f;0] () ($call[local] ($lref yy[2;0]))))))) ($lambda[#f;0] () ($const #f))))
続きは明日。