From 19ceadab5154af4c9e28ebe573da79db618e0bc9 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Thu, 3 Apr 2014 16:37:07 +0200 Subject: [PATCH] Effects analysis: define causes-all-effects? * module/language/cps/effects-analysis.scm (causes-all-effects?): New export. --- module/language/cps/effects-analysis.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/module/language/cps/effects-analysis.scm b/module/language/cps/effects-analysis.scm index 8601e358c..be5f8721b 100644 --- a/module/language/cps/effects-analysis.scm +++ b/module/language/cps/effects-analysis.scm @@ -70,7 +70,8 @@ effect-free? constant? depends-on-effects? - causes-effects?)) + causes-effects? + causes-all-effects?)) (define-syntax define-effects (lambda (x) @@ -233,6 +234,8 @@ (not (zero? (logand (&depends-on x) effects)))) (define-inlinable (causes-effects? x effects) (not (zero? (logand (&causes x) (cause effects))))) +(define-inlinable (causes-all-effects? x effects) + (= (logand (&causes x) (cause effects)) (cause effects))) (define-inlinable (effects-commute? a b) (and (not (causes-effects? a (&depends-on b)))