anchor.diff:        (let ((location
   	      (etypecase ast
   		(sicl-ast:lexical-ast
  -		 (sicl-mir:make-lexical-location
  +		 (cleavir-mir:make-lexical-location
   		  (sicl-ast:name ast)))
   		(sicl-ast:global-ast
  -		 (sicl-mir:make-global-input
  +		 (cleavir-mir:make-global-input
   		  (sicl-ast:name ast)
   		  (sicl-ast:storage ast)))
   		(sicl-ast:special-ast
  -		 (sicl-mir:make-special-location
  +		 (cleavir-mir:make-special-location
   		  (sicl-ast:name ast)
   		  (sicl-ast:storage ast))))))
   	(setf (gethash ast *location-info*) location))))
  
positive.code: 	     (loop for result in results
  		   for temp in temps
  		   do (setf next
  			    (sicl-mir:make-assignment-instruction
  			     temp result next)))
  	     ;; Before assigning to the results, check the
  	     ;; types of the values.
  
negative.code:       context
      (let ((code (compile-function (sicl-ast:body-ast ast))))
        (ecase (length successors)
  	(0 (let ((temp (cleavir-mir:new-temporary)))
  	     (cleavir-mir:make-enclose-instruction
  	      temp
  	      (cleavir-mir:make-return-instruction (list temp))
  	      code)))
  	(1 (if (null results)
  	       (progn (warn "closure compiled in a context with no values")
  		      (car successors))
  	       (cleavir-mir:make-enclose-instruction
  		(car results)
  		(nil-fill (cdr results) (car successors))
  		code)))
  	(2 (if (null results)
  	       (car successors)
  	       (cleavir-mir:make-enclose-instruction
  		(car results)
  		(nil-fill (cdr results) (cadr successors))
  		code)))))))
  