gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gcl-devel] (random tester) Another compiler side effects bug


From: Paul F. Dietz
Subject: [Gcl-devel] (random tester) Another compiler side effects bug
Date: Thu, 30 Oct 2003 07:24:20 -0600
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624

Here's another order-of-evaluation problem related to side
effects in local functions, found by the random tester.  The tests
are from ansi-tests/misc.lsp.  Both fail in gcl (current cvs,
configured with --enable-ansi).

(deftest misc.123
  (let* ((fn1 '(lambda (b)
                 (declare (optimize (safety 1)))
                 (labels ((%f7 (f7-1 f7-2)
                               (let ((v2 (setq b 723149855)))
                                 25620)))
                   (max b
                        (multiple-value-call #'%f7 (values b 2))))))
         (fn2 '(lambda (b)
                 (labels ((%f7 (f7-1 f7-2)
                               (let ((v2 (setq b 723149855)))
                                 25620)))
                   (max b
                        (multiple-value-call #'%f7 (values b 2))))))
         (vals '(1439719153))
         (v1 (apply (compile nil fn1) vals))
         (v2 (apply (compile nil fn2) vals)))
    (if (eql v1 v2) :good (list v1 v2)))
  :good)

(deftest misc.124
  (let* ((fn1 '(lambda (b)
                 (declare (optimize (safety 1)))
                 (labels ((%f7 (f7-1 f7-2)
                               (let ((v2 (setq b 723149855)))
                                 25620)))
                   (max b
                        (funcall #'%f7 b 2)))))
         (fn2 '(lambda (b)
                 (labels ((%f7 (f7-1 f7-2)
                               (let ((v2 (setq b 723149855)))
                                 25620)))
                   (max b
                        (funcall #'%f7 b 2)))))
         (vals '(1439719153))
         (v1 (apply (compile nil fn1) vals))
         (v2 (apply (compile nil fn2) vals)))
    (if (eql v1 v2) :good (list v1 v2)))
  :good)


The same test with just a straight call of %f7 doesn't fail.

        Paul





reply via email to

[Prev in Thread] Current Thread [Next in Thread]