Fix compilation of &OPTIONAL binding with non-EQL-comparable constant default.
commit9be52db802571d445cbd9c7fd98ffc59bc48be85
authorDouglas Katzman <dougk@google.com>
Thu, 13 Jul 2017 16:40:05 +0000 (13 12:40 -0400)
committerDouglas Katzman <dougk@google.com>
Thu, 13 Jul 2017 16:50:14 +0000 (13 12:50 -0400)
tree944e19854a38b175163a95effc9545dd3d05d591
parent8942864884fb880b98a80dc174164cae4efd96b5
Fix compilation of &OPTIONAL binding with non-EQL-comparable constant default.

Uses of "hairy" named constants (as from SB-INT:DEFCONSTANT-EQX) should be
compiled into LOAD-TIME-VALUE on the respective symbol. Most were, except that
&OPTIONAL arg defaults would eagerly evaluate the symbol at compile-time.
In addition to causing a semantic problem for vectors, the compiler complained
about absence of a MAKE-LOAD-FORM method on a structure class where no such
literal object ought to be dumped to the fasl at all.
NEWS
src/compiler/ir1tran-lambda.lisp
tests/compiler.impure-cload.lisp