Function: comp--ssa-rename

comp--ssa-rename is a byte-compiled function defined in comp.el.gz.

Signature

(comp--ssa-rename)

Documentation

Entry point to rename into SSA within the current function.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/comp.el.gz
(defun comp--ssa-rename ()
  "Entry point to rename into SSA within the current function."
  (comp-log "Renaming\n" 2)
  (let ((visited (make-hash-table)))
    (cl-labels ((ssa-rename-rec (bb in-frame)
                  (unless (gethash bb visited)
                    (puthash bb t visited)
                    (cl-loop for insn in (comp-block-insns bb)
                             do (comp--ssa-rename-insn insn in-frame))
                    (setf (comp-block-final-frame bb)
                          (copy-sequence in-frame))
                    (when-let* ((out-edges (comp-block-out-edges bb)))
                      (cl-loop
                       for ed in out-edges
                       for child = (comp-edge-dst ed)
                       ;; Provide a copy of the same frame to all children.
                       do (ssa-rename-rec child (comp-vec-copy in-frame)))))))

      (ssa-rename-rec (gethash 'entry (comp-func-blocks comp-func))
                      (comp--new-frame (comp-func-frame-size comp-func)
                                      (comp-func-vframe-size comp-func)
                                      t)))))