[Openmcl-cvs-notifications] r15076 - /trunk/source/compiler/vinsn.lisp
gb at clozure.com
gb at clozure.com
Sat Nov 19 16:10:25 CST 2011
Author: gb
Date: Sat Nov 19 16:10:25 2011
New Revision: 15076
Log:
VINSN-SEQUENCE-HAS-SOME-ATTRIBUTE-P.
Modified:
trunk/source/compiler/vinsn.lisp
Modified: trunk/source/compiler/vinsn.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/vinsn.lisp (original)
+++ trunk/source/compiler/vinsn.lisp Sat Nov 19 16:10:25 2011
@@ -552,7 +552,7 @@
=
=
;;; Return T if any vinsn between START and END (exclusive) has all
-;;; attributes set in MASK set.
+;;; attributes set in ATTR set.
(defun %vinsn-sequence-has-attribute-p (start end attr)
(do* ((element (dll-node-succ start) (dll-node-succ element)))
((eq element end))
@@ -560,8 +560,20 @@
(when (eql attr (logand (vinsn-template-attributes (vinsn-template e=
lement)) attr))
(return t)))))
=
+;;; Return T if any vinsn between START and END (exclusive) has some
+;;; some attributes set in attr set.
+(defun %vinsn-sequence-has-some-attribute-p (start end attr)
+ (do* ((element (dll-node-succ start) (dll-node-succ element)))
+ ((eq element end))
+ (when (typep element 'vinsn)
+ (when (logtest attr (vinsn-template-attributes (vinsn-template eleme=
nt)))
+ (return t)))))
+
(defmacro vinsn-sequence-has-attribute-p (start end &rest attrs)
`(%vinsn-sequence-has-attribute-p ,start ,end ,(encode-vinsn-attributes =
attrs)))
+
+(defmacro vinsn-sequence-has-some-attribute-p (start end &rest attrs)
+ `(%vinsn-sequence-has-some-attribute-p ,start ,end ,(encode-vinsn-attrib=
utes attrs)))
=
;;; Return T iff vinsn is between START and END (exclusive).
(defun vinsn-in-sequence-p (vinsn start end)
More information about the Openmcl-cvs-notifications
mailing list