-;;; This function is used to set the continuation for a node, and thus
-;;; determine what receives the value and what is evaluated next. If
-;;; the continuation has no block, then we make it be in the block
-;;; that the node is in. If the continuation heads its block, we end
-;;; our block and link it to that block. If the continuation is not
-;;; currently used, then we set the DERIVED-TYPE for the continuation
-;;; to that of the node, so that a little type propagation gets done.
-#!-sb-fluid (declaim (inline use-continuation))
-(defun use-continuation (node cont)
- (declare (type node node) (type continuation cont))
- (let ((node-block (continuation-block (node-prev node))))
- (case (continuation-kind cont)
- (:unused
- (setf (continuation-block cont) node-block)
- (setf (continuation-kind cont) :inside-block)
- (setf (continuation-use cont) node)
- (setf (node-cont node) cont))
- (t
- (%use-continuation node cont)))))
-(defun %use-continuation (node cont)
- (declare (type node node) (type continuation cont) (inline member))
- (let ((block (continuation-block cont))
- (node-block (continuation-block (node-prev node))))
- (aver (eq (continuation-kind cont) :block-start))
+;;; This function is used to set the ctran for a node, and thus
+;;; determine what is evaluated next. If the ctran has no block, then
+;;; we make it be in the block that the node is in. If the ctran heads
+;;; its block, we end our block and link it to that block.
+#!-sb-fluid (declaim (inline use-ctran))
+(defun use-ctran (node ctran)
+ (declare (type node node) (type ctran ctran))
+ (if (eq (ctran-kind ctran) :unused)
+ (let ((node-block (ctran-block (node-prev node))))
+ (setf (ctran-block ctran) node-block)
+ (setf (ctran-kind ctran) :inside-block)
+ (setf (ctran-use ctran) node)
+ (setf (node-next node) ctran))
+ (%use-ctran node ctran)))
+(defun %use-ctran (node ctran)
+ (declare (type node node) (type ctran ctran) (inline member))
+ (let ((block (ctran-block ctran))
+ (node-block (ctran-block (node-prev node))))
+ (aver (eq (ctran-kind ctran) :block-start))