From acf1ed070ff8cb30d1a6bd437b823e1f4197462e Mon Sep 17 00:00:00 2001 From: wlott <wlott> Date: Tue, 21 Apr 1992 04:15:00 +0000 Subject: [PATCH] Added a block-annotation structure, which both the ir2 and the byte-code back ends :include in their block-info annotations. --- compiler/node.lisp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/compiler/node.lisp b/compiler/node.lisp index 2f8f15c3f..4ff1dfbe5 100644 --- a/compiler/node.lisp +++ b/compiler/node.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/node.lisp,v 1.23 1992/02/23 17:43:45 ram Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/node.lisp,v 1.24 1992/04/21 04:15:00 wlott Exp $") ;;; ;;; ********************************************************************** ;;; @@ -383,13 +383,29 @@ ;; merit of being tested by its IF predecessor. (test-constraint nil :type (or sset null))) - (defun %print-block (s stream d) (declare (ignore d)) (format stream "#<Block ~X, Start = c~D>" (system:%primitive make-fixnum s) (cont-num (block-start s)))) +;;; The Block-Annotation structure is shared (via :include) by different +;;; block-info annotation structures so that code (specifically control +;;; analysis) can be shared. +;;; +(defstruct (block-annotation + (:constructor nil)) + ;; + ;; The IR1 block that this block is in the Info for. + (block (required-argument) :type cblock) + ;; + ;; The next and previous block in emission order (not DFO). This determines + ;; which block we drop though to, and also used to chain together overflow + ;; blocks that result from splitting of IR2 blocks in lifetime analysis. + (next nil :type (or block-annotation null)) + (prev nil :type (or block-annotation null))) + + ;;; The Component structure provides a handle on a connected piece of the flow ;;; graph. Most of the passes in the compiler operate on components rather ;;; than on the entire flow graph. -- GitLab