[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