compiler: Don't let continuation-analysis add a cycle...
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Sun, 2 Jun 2013 01:53:24 +0000 (18:53 -0700)
committerMatt Birkholz <matt@birkholz.chandler.az.us>
Sun, 2 Jun 2013 01:53:24 +0000 (18:53 -0700)
commit78d42fabf21ab81ddf2cec96e33894bfa18b42fd
tree53001bfd964e594fd2d681ea5e0605878dbb9d1f
parent543d593db17b79ff784162c32424160d750d1d2e
compiler: Don't let continuation-analysis add a cycle...

...to the block tree, which it would do (causing a "maximum recursion
depth exceeded" abort during block->dbg-block) when compiling crazy
code like:

      (define (fubar param)
(define (closure) param)
(define (loop)
  (closure)
  (loop)
  ;; It doesn't break without this
  (tail-call)))
      (fubar sumpn)

This patch checks that the "Acceptable substitute" for a block's
stack-link is not inside the block.
src/compiler/fgopt/contan.scm