1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-24 21:50:20 +02:00
guile/module/language/tree-il
Andy Wingo 0083cb5ec4 fix self tail recursion to different case-lambda clauses
http://savannah.gnu.org/bugs/?33362

* module/language/tree-il/compile-glil.scm (flatten-lambda-case): Rename
  from flatten, as it really just takes a particular case.  Instead of
  iteratively compiling lambda cases through `comp', tail-call through
  flatten-lambda-case.  This allows code to see which case it's being
  compiled in.  Take advantage of that to limit the self-tail-call
  optimization to self-calls to the same case -- otherwise we might be
  jumping to a label without having reserved the right number of
  locals.
  (flatten-lambda): Adapt the caller.

* test-suite/tests/compiler.test ("case-lambda"): Add a test.
2011-06-17 17:08:06 +02:00
..
analyze.scm fix analyze.scm literal string warnings 2011-04-14 16:53:18 +02:00
compile-glil.scm fix self tail recursion to different case-lambda clauses 2011-06-17 17:08:06 +02:00
fix-letrec.scm fix-letrec tweaks 2011-03-09 22:38:11 +01:00
inline.scm fix memq/memv inlining 2011-02-07 21:58:51 +01:00
optimize.scm compilation enviroments are always modules; simplifications & refactorings 2009-10-16 15:33:32 +02:00
primitives.scm inline symbol? and vector? to opcodes, and a psyntax inlining tweak 2010-10-08 12:31:56 +02:00
spec.scm remove `version' field from <language> 2010-05-02 11:19:13 +02:00