From e9857fdd969dc08750c2cebe3852b8d81ec3b381 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Mon, 24 Oct 1988 22:18:41 +0000 Subject: [PATCH] Continuation can still be sometimes known even when it is passed out. This was causing bug where continuation was "never known", but because the return application knew it, it was assuming "sometimes known". --- v7/src/compiler/fgopt/operan.scm | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/v7/src/compiler/fgopt/operan.scm b/v7/src/compiler/fgopt/operan.scm index e8626273f..71c4e15bb 100644 --- a/v7/src/compiler/fgopt/operan.scm +++ b/v7/src/compiler/fgopt/operan.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/fgopt/operan.scm,v 4.3 1988/08/18 01:36:20 cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/fgopt/operan.scm,v 4.4 1988/10/24 22:18:41 cph Exp $ Copyright (c) 1987 Massachusetts Institute of Technology @@ -79,16 +79,17 @@ MIT in each case. |# (lambda (rvalue) (not (rvalue/procedure? rvalue)))))))))) (define (analyze/continuation continuation) - (and (not (continuation/passed-out? continuation)) - (3-logic/and - (for-some? (continuation/returns continuation) - (lambda (return) - (eq? (rvalue-known-value (return/operator return)) - continuation))) - (for-some? (continuation/combinations continuation) - (lambda (combination) - (eq? (rvalue-known-value (combination/continuation combination)) - continuation)))))) + (3-logic/and + (and (not (continuation/passed-out? continuation)) 'ALWAYS) + (3-logic/and + (for-some? (continuation/returns continuation) + (lambda (return) + (eq? (rvalue-known-value (return/operator return)) + continuation))) + (for-some? (continuation/combinations continuation) + (lambda (combination) + (eq? (rvalue-known-value (combination/continuation combination)) + continuation)))))) (define (for-some? items predicate) (let loop ((items items) (default false)) -- 2.25.1