diff --git a/src/cmp/cmpbackend-cxx/cmppass2-exit.lsp b/src/cmp/cmpbackend-cxx/cmppass2-exit.lsp index 45112c249..ad9882199 100644 --- a/src/cmp/cmpbackend-cxx/cmppass2-exit.lsp +++ b/src/cmp/cmpbackend-cxx/cmppass2-exit.lsp @@ -130,11 +130,10 @@ (or (eq (car *destination*) 'JUMP-TRUE) (eq (car *destination*) 'JUMP-FALSE))) (unwind-stacks frs-bind bds-lcl bds-bind stack-frame ihs-p)) - ((not (or (plusp frs-bind) bds-lcl (plusp bds-bind) stack-frame)) - (set-loc loc)) ;; Save the value if LOC may possibly refer to special binding. - ((or (loc-refers-to-special-p loc) - (loc-refers-to-special-p *destination*)) + ((and (or (plusp frs-bind) bds-lcl (plusp bds-bind) stack-frame) + (or (loc-refers-to-special-p loc) + (loc-refers-to-special-p *destination*))) (let* ((*temp* *temp*) (temp (make-temp-var))) (let ((*destination* temp))