anchor.diff:      spirv-core:type-int
       spirv-core:line
       spirv-core:member-name
  -    spirv-core:source))
  +    spirv-core:source
  +    spirv-core:composite-extract))
   
   ;; check for list in 2nd cons to distinguish from automatic names
   ;; like (:block foo)
  
positive.code:   (setf (gethash type *types*) definition)
    type)
  
  (defun normalize-literals-and-types (x &key force layout (expand-structs t))
    (typecase x
      ((or (eql :bool)
           (cons (eql :bool)))
  
negative.code:     (error "explicit type/constant ops not handled correctly yet..."))
    ;; handle literals in default case since it applies to most
    ;; instructions, and just have a list of ops to skip
    (let ((a (loop for i in args
                   collect (normalize-literals-and-types
                            i
                            :keep-literals (member op *no-auto-constants-ops*)))))
      (unless (equal a (cdr *current-form*))
        (setf *current-form* (cons op a)))))
  
  (defmacro defpass1 (op lambda-list &body body)
    (let ((args (gensym "ARGS")))
  