(defun restrict-compiler-policy (&optional quality (min 0))
#!+sb-doc
- "Assing a minimum value to an optimization quality. QUALITY is the name of
+ "Assign a minimum value to an optimization quality. QUALITY is the name of
the optimization quality to restrict, and MIN (defaulting to zero) is the
minimum allowed value.
This is intended to be used interactively, to facilitate recompiling large
bodies of code with eg. a known minimum safety.
+See also :POLICY option in WITH-COMPILATION-UNIT.
+
EXPERIMENTAL INTERFACE: Subject to change."
(declare (type policy-quality min))
(when quality
(assq x *policy-dependent-qualities*)))
;;; Is it deprecated?
-(defun policy-quality-deprecation-warning (quality spec)
- (when (member quality '(stack-allocate-dynamic-extent stack-allocate-vector
- stack-allocate-value-cells))
- (make-instance 'simple-reference-warning
- :format-control "~@<Ignoring deprecated optimization quality ~S in:~_ ~S~:>"
- :format-arguments (list quality spec)
- :references (list '(:sbcl :variable *stack-allocate-dynamic-extent*)
- '(:sbcl :node "Dynamic-extent allocation")))))
+(defun policy-quality-deprecation-warning (quality)
+ (case quality
+ ((stack-allocate-dynamic-extent stack-allocate-vector stack-allocate-value-cells)
+ (deprecation-warning :late "1.0.19.7" quality '*stack-allocate-dynamic-extent*
+ :runtime-error nil)
+ t)
+ ((merge-tail-calls)
+ (deprecation-warning :early "1.0.53.74" quality nil :runtime-error nil)
+ t)
+ (otherwise
+ nil)))
;;; *POLICY* holds the current global compiler policy information, as
;;; an alist mapping from optimization quality name to quality value.