diff --git a/compiler/main.lisp b/compiler/main.lisp index fbf4528365b86981ce55c99015113a3e95218a27..96f99c1b42ef6a64ab742bca86771debeafa4c22 100644 --- a/compiler/main.lisp +++ b/compiler/main.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/main.lisp,v 1.104 1994/08/21 15:19:19 ram Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/main.lisp,v 1.105 1994/09/30 01:42:13 ram Exp $") ;;; ;;; ********************************************************************** ;;; @@ -83,11 +83,18 @@ ;;; :Block-Compile and :Entry-Points arguments that COMPILE-FILE was called ;;; with. Subsequent START-BLOCK or END-BLOCK declarations alter the values. ;;; +;;; *Block-Compile-Argument* holds the original value of the :block-compile +;;; argument, which overrides any internal declarations. +;;; (defvar *block-compile*) -(declaim (type (member nil t :specified) *block-compile*)) +(defvar *block-compile-argument*) +(declaim (type (member nil t :specified) + *block-compile* *block-compile-argument*)) (defvar *entry-points*) (declaim (list *entry-points*)) +;;; + ;;; When block compiling, used by PROCESS-FORM to accumulate top-level lambdas ;;; resulting from compiling subforms. (In reverse order.) ;;; @@ -1045,12 +1052,13 @@ ;;; ;;; If a special block compilation delimiter, then start or end the block as ;;; appropriate. Otherwise, just convert-and-maybe-compile the form. If -;;; *BLOCK-COMPILE* is NIL, then we ignore block declarations. +;;; :block-compile was T or NIL, then we ignore any start/end block +;;; declarations. ;;; (defun process-proclaim (form path) (if (and (eql (length form) 2) (constantp (cadr form))) (let ((spec (eval (cadr form)))) - (if (and (consp spec) (eq *block-compile* :specified)) + (if (and (consp spec) (eq *block-compile-argument* :specified)) (case (first spec) (start-block (finish-block-compilation) @@ -1477,7 +1485,8 @@ (defun sub-compile-file (info &optional d-s-info) (declare (type source-info info)) (with-ir1-namespace - (let* ((start-errors *compiler-error-count*) + (let* ((*block-compile* *block-compile-argument*) + (start-errors *compiler-error-count*) (start-warnings *compiler-warning-count*) (start-notes *compiler-note-count*) (*package* *package*) @@ -1564,7 +1573,8 @@ ((:verbose *compile-verbose*) *compile-verbose*) ((:print *compile-print*) *compile-print*) ((:progress *compile-progress*) *compile-progress*) - ((:block-compile *block-compile*) *block-compile-default*) + ((:block-compile *block-compile-argument*) + *block-compile-default*) ((:entry-points *entry-points*) nil) ((:byte-compile *byte-compile*) *byte-compile-default*) source-info @@ -1652,7 +1662,7 @@ ((:verbose *compile-verbose*) *compile-verbose*) ((:print *compile-print*) *compile-print*) ((:progress *compile-progress*) *compile-progress*) - ((:block-compile *block-compile*) + ((:block-compile *block-compile-argument*) *block-compile-default*) ((:entry-points *entry-points*) nil) ((:byte-compile *byte-compile*)