Different values returns depending on optimize, notinline settings
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
(defparameter *f338-form*
'(loop for lv3 below 1
count (typep
(declaim (special *s1* *s2* *s4* *s5* *s9*))
(fmakunbound 'f338a)
(fmakunbound 'f338b)
(defun f338 ()
(let* ((vals '(1 2 3))
(vars '(a b c))
(form *f338-form*)
(def1
`(defun f338a ,vars
,form))
(def2
`(defun f338b ,vars
(eval def1)
(eval def2)
(values (apply (symbol-function 'f338a) vals)
(apply (symbol-function 'f338b) vals))))
(f338) ==> 0, 1
Changed in sbcl: | |
status: | Fix Committed → Fix Released |
Preliminary reduction:
(defun f338 ()
count (typep
(let ((y (let* ((s (cons 1 2)))
(declare (dynamic-extent s))
(cdr s))))
(progv '(* ** ***) (list a b c))
y)
'fixnum) ))
(declare (optimize speed debug))
,form))
(declare (optimize (speed 1) (debug 2)))
,form)) )
(let* ((vals '(0 0 0))
(vars '(a b c))
(form '(loop for lv3 below 1
(def1
`(lambda ,vars
(def2
`(lambda ,vars
(values (apply (compile nil def1) vals)
(apply (compile nil def2) vals))))