From: Nikodemus S. <de...@us...> - 2009-07-08 13:35:00
|
Update of /cvsroot/sbcl/sbcl/src/compiler In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv28304/src/compiler Modified Files: ltv.lisp represent.lisp Log Message: 1.0.29.54.rc5: fix load-time-value regressions * (SPECIFIIER-TYPE 'FUNCTION) is not a FUN-TYPE. * Don't allow constant moves from LTV TNs (better fix after release): this is the simple and obviously correct fix. * Also declaim the type of the correct function in the test-case from last commit. Index: ltv.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/ltv.lisp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- ltv.lisp 28 Jun 2009 21:18:44 -0000 1.7 +++ ltv.lisp 8 Jul 2009 13:34:56 -0000 1.8 @@ -35,7 +35,10 @@ (specifier-type 'function)) ((and (legal-fun-name-p op) (eq :declared (info :function :where-from op))) - (fun-type-returns (info :function :type op))) + (let ((ftype (info :function :type op))) + (if (fun-type-p ftype) + (fun-type-returns ftype) + *wild-type*))) (t *wild-type*)))) ((and (symbolp form) Index: represent.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/represent.lisp,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- represent.lisp 14 Jul 2005 18:57:01 -0000 1.17 +++ represent.lisp 8 Jul 2009 13:34:56 -0000 1.18 @@ -414,7 +414,12 @@ (operand-restriction-ok (first (template-result-types info)) (if write-p op-ptype other-ptype) - :t-ok nil)) + :t-ok nil) + ;; KLUDGE: Move VOPs with constant SCs can't use + ;; load-time-value TNs. FIXME: if the VOPs were more + ;; clever they could -- this is the release bandaid. + (or (not (eq 'constant (sc-name op-sc))) + (tn-leaf op-tn))) (return info)))))) ;;; Emit a coercion VOP for OP BEFORE the specifed VOP or die trying. |