Function: comp--add-cond-cstrs-simple

comp--add-cond-cstrs-simple is a byte-compiled function defined in comp.el.gz.

Signature

(comp--add-cond-cstrs-simple)

Documentation

comp--add-cstrs worker function for each selected function.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/comp.el.gz
(defun comp--add-cond-cstrs-simple ()
  "`comp--add-cstrs' worker function for each selected function."
  (cl-loop
   for b being each hash-value of (comp-func-blocks comp-func)
   do
   (cl-loop
    named in-the-basic-block
    for insn-seq on (comp-block-insns b)
    do
    (pcase insn-seq
      (`((set ,(and (pred comp-mvar-p) tmp-mvar) ,(pred comp-mvar-p))
         ;; (comment ,_comment-str)
         (cond-jump ,tmp-mvar ,obj2 . ,blocks))
       (cl-loop
        for branch-target-cell on blocks
        for branch-target = (car branch-target-cell)
        for negated in '(nil t)
	when (comp--mvar-used-p tmp-mvar)
        do
	(let ((block-target (comp--add-cond-cstrs-target-block b branch-target)))
          (setf (car branch-target-cell) (comp-block-name block-target))
          (comp--emit-assume 'and tmp-mvar obj2 block-target negated))
        finally (cl-return-from in-the-basic-block)))
      (`((cond-jump ,obj1 ,obj2 . ,blocks))
       (cl-loop
        for branch-target-cell on blocks
        for branch-target = (car branch-target-cell)
        for negated in '(nil t)
	when (comp--mvar-used-p obj1)
        do
	(let ((block-target (comp--add-cond-cstrs-target-block b branch-target)))
          (setf (car branch-target-cell) (comp-block-name block-target))
          (comp--emit-assume 'and obj1 obj2 block-target negated))
        finally (cl-return-from in-the-basic-block)))))))