1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

Use more logtest in cse.scm

* module/language/cps/effects-analysis.scm (causes-effect?):
(effect-clobbers?): Use logtest.
This commit is contained in:
Andy Wingo 2021-10-03 21:09:41 +02:00
parent c9c16db694
commit 71e201d5c4

View file

@ -221,7 +221,7 @@
(logior &all-effect-kinds (&object &unknown-memory-kinds))))
(define-inlinable (causes-effect? x effects)
(not (zero? (logand x effects))))
(logtest x effects))
(define-inlinable (causes-all-effects? x)
(eqv? x &all-effects))
@ -238,8 +238,8 @@ is or might be a read or a write to the same location as A."
;; A negative field indicates "the whole object".
;; Non-negative fields indicate only part of the object.
(or (< a 0) (< b 0) (= a b))))))
(and (not (zero? (logand a &write)))
(not (zero? (logand b (logior &read &write))))
(and (logtest a &write)
(logtest b (logior &read &write))
(locations-same?)))
(define (compute-clobber-map effects)