anchor.diff:  ;;; Compile a function.
   
   (defun compile-function (body-ast)
  -  (sicl-mir:make-enter-instruction 
  +  (cleavir-mir:make-enter-instruction 
      (compile-ast body-ast (context '() '()))))
     
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
positive.code:        ;; supplied and that its return type is NIL.
         (if (and (typep (sicl-ast:callee-ast ast) 'sicl-ast:global-ast)
  		(eq (sicl-ast:name (sicl-ast:callee-ast ast)) 'error))
  	   (sicl-mir:make-funcall-instruction temps)
  	   (ecase (length successors)
  	     (0 (sicl-mir:make-tailcall-instruction temps))
  	     (1 (sicl-mir:make-funcall-instruction
  		 temps
  		 (sicl-mir:make-get-values-instruction
  		  results (car successors))))
  	     (2 (let ((temp (sicl-mir:new-temporary)))
  		  (sicl-mir:make-funcall-instruction
  		   temps
  		   (sicl-mir:make-get-values-instruction
  		    (list temp)
  		    (sicl-mir:make-==-instruction
  		     (list temp (sicl-mir:make-constant-input nil))
  		     successors)))))))))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
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)))))))
  