Subject: bug#15533: optimizing away noticeable effects

From: Mark H Weaver <[email-masked]>
Date: Sun, 06 Oct 2013 02:39:00 -0400

Mark H Weaver <[email-masked]> writes:

> Mark H Weaver <[email-masked]> writes:
>
>> Ian Price <[email-masked]> writes:
>>
>>> scheme@(guile-user)> ,optimize (define (foo f arg)
>>>   (let* ((l '())
>>>          (m (if (pair? arg)
>>>                 (begin
>>>                   (set! l (cdr arg))
>>>                   (car arg))
>>>                 arg)))
>>>     (lambda () (apply f m l))))
>>> $14 = (define (foo f arg)
>>>   (let ((m (if (pair? arg)
>>>              (begin (begin (cdr arg) (if #f #f)) (car arg))
>>>              arg)))
>>>     (lambda () (f m))))
>>
>> I can confirm that the same thing happens on the stable-2.0 branch.
>
> Further investigation has revealed that 'peval' incorrectly removes the
> 'l' from the call to 'apply'.

stis pointed out that 2.0.5 does not have this bug.  I'm currently doing
a git bisect to determine which commit introduced the bug.

     Mark