UPGRADED-ARRAY-ELEMENT-TYPE: more thoroughly signal errors on unknown types.
[sbcl.git] / src / compiler / policy.lisp
index 37ba0a7..cadc959 100644 (file)
@@ -19,7 +19,7 @@
 
 (defun restrict-compiler-policy (&optional quality (min 0))
   #!+sb-doc
 
 (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.
 
 the optimization quality to restrict, and MIN (defaulting to zero) is the
 minimum allowed value.
 
@@ -36,6 +36,8 @@ was MIN instead.
 This is intended to be used interactively, to facilitate recompiling large
 bodies of code with eg. a known minimum safety.
 
 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
 EXPERIMENTAL INTERFACE: Subject to change."
   (declare (type policy-quality min))
   (when quality
@@ -73,14 +75,17 @@ EXPERIMENTAL INTERFACE: Subject to change."
       (assq x *policy-dependent-qualities*)))
 
 ;;; Is it deprecated?
       (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.
 
 ;;; *POLICY* holds the current global compiler policy information, as
 ;;; an alist mapping from optimization quality name to quality value.