anchor.diff:  ;;; Convert the body forms of a function.
   (defun convert-body (body env system)
     (let ((new-env (augment-environment-with-declarations env (dspecs body))))
  -    (convert (if (boundp '*block-name*)
  -		 (let ((block-name *block-name*))
  -		   (makunbound '*block-name*)
  -		   `(block ,block-name ,@(forms body)))
  +    (convert (if (block-name-p body)
  +		 `(block ,(block-name body) ,@(forms body))
   		 `(progn ,@(forms body)))
   	     new-env system)))
   
  
positive.code: 	      (process-required required
  				parsed-lambda-list
  				idspecs
  				(make-body rdspecs forms)
  				env
  				system)
  	    (cleavir-ast:make-function-ast ast lexical-lambda-list)))))))
  
negative.code: ;;; simply to avoid very long lambda lists in the source code.
  (defclass body ()
    ((%dspecs :initarg :dspecs :accessor dspecs)
     (%forms :initarg :forms :accessor forms)
     (%block-name :initarg :block-name :reader block-name)
     (%block-name-p :initarg :block-name-p :reader block-name-p)))
  
  (defun make-body (dspecs forms block-name block-name-p)
    (make-instance 'body
      :dspecs dspecs
      :forms forms
      :block-name block-name
      :block-name-p block-name-p))
  
  ;;; This variable is either unbound or it is bound to a symbol which
  ;;; is the name of a BLOCK.  When it is unbound, we convert the body
  