Function: comp-rewrite-non-locals

comp-rewrite-non-locals is a byte-compiled function defined in comp.el.gz.

Signature

(comp-rewrite-non-locals)

Documentation

Make explicit in LIMPLE non-local exits if identified.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/comp.el.gz
(defun comp-rewrite-non-locals ()
  "Make explicit in LIMPLE non-local exits if identified."
  (cl-loop
   for bb being each hash-value of (comp-func-blocks comp-func)
   for non-local-insn = (and (comp-block-lap-p bb)
                             (comp-block-lap-non-ret-insn bb))
   when non-local-insn
   do
   ;; Rework the current block.
   (let* ((insn-seq (memq non-local-insn (comp-block-insns bb))))
     (setf (comp-block-lap-non-ret-insn bb) ()
           (comp-block-lap-no-ret bb) t
           (comp-block-out-edges bb) ()
           ;; Prune unnecessary insns!
           (cdr insn-seq) '((unreachable))
           (comp-func-ssa-status comp-func) 'dirty))))