1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-23 21:10:29 +02:00

Effects analysis: define causes-all-effects?

* module/language/cps/effects-analysis.scm (causes-all-effects?): New
  export.
This commit is contained in:
Andy Wingo 2014-04-03 16:37:07 +02:00
parent f5fcd7f203
commit 19ceadab51

View file

@ -70,7 +70,8 @@
effect-free? effect-free?
constant? constant?
depends-on-effects? depends-on-effects?
causes-effects?)) causes-effects?
causes-all-effects?))
(define-syntax define-effects (define-syntax define-effects
(lambda (x) (lambda (x)
@ -233,6 +234,8 @@
(not (zero? (logand (&depends-on x) effects)))) (not (zero? (logand (&depends-on x) effects))))
(define-inlinable (causes-effects? x effects) (define-inlinable (causes-effects? x effects)
(not (zero? (logand (&causes x) (cause 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) (define-inlinable (effects-commute? a b)
(and (not (causes-effects? a (&depends-on b))) (and (not (causes-effects? a (&depends-on b)))