better type propagation for MULTIPLE-VALUE-BIND
authorNikodemus Siivola <nikodemus@sb-studio.net>
Mon, 8 Aug 2011 10:48:24 +0000 (13:48 +0300)
committerNikodemus Siivola <nikodemus@sb-studio.net>
Mon, 8 Aug 2011 12:01:12 +0000 (15:01 +0300)
commit140a70b39c52de58ddd8a3d5caabebd99fd2a2c6
tree52f94ae06c4c03bd18d572651592aa15dc45b9b9
parent6d67d71e21d95c26119b8c7cea1bc64811892767
better type propagation for MULTIPLE-VALUE-BIND

  Previously code such as

   (multiple-value-bind (x y) (known-call ...)
      ...)

  could lose the derived type for KNOWN-CALL when it was converted to
  an inline lambda: the derived type correctly ended up associated
  with the final VALUES call in the inlined code, but
  CONVERT-MV-BIND-TO-LET lost that.

  Address this by propagating the derived type of VALUES to the
  VALUES arguments.

  Allows removing the TRULY-THE kludge from the new TRUNCATE
  transform.
src/compiler/ir1opt.lisp
src/compiler/srctran.lisp
tests/compiler.impure.lisp