+ (< safety 3))
+ 3
+ 0)
+ ("no" "maybe" "yes" "yes")
+ "Control whether allocate objects, declared DYNAMIC-EXTENT, on
+stack.")
+
+(define-optimization-quality stack-allocate-value-cells
+ ;; FIXME, see bug 419
+ 0
+ ("no" "maybe" "yes" "yes")
+ "Control whether allocate closure variable storage, declared
+DYNAMIC-EXTENT, on stack.")
+
+(define-optimization-quality stack-allocate-vector
+ (cond ((= stack-allocate-dynamic-extent 0) 0)
+ ((= safety 0) 3)
+ (t 2))
+ ("no" "maybe" "one page" "yes")
+ "Control what vectors, declared DYNAMIC-EXTENT, are allocated on stack:
+0: no vectors are allocated on stack;
+2: only short vectors (compiler knows them to fit on one page);
+3: every.
+
+This option has an effect only when STACK-ALLOCATE-DYNAMIC-EXTENT is
+set.")
+
+(define-optimization-quality float-accuracy
+ 3
+ ("degraded" "full" "full" "full"))
+
+(define-optimization-quality insert-step-conditions
+ (if (> debug (max speed space compilation-speed))
+ debug
+ 0)
+ ("no" "no" "partial" "full")
+ "Control instrumentation of code, enabling single-stepping through
+it in the debugger.
+
+This option has no effect without COMPUTE-DEBUG-FUN.")
+
+(define-optimization-quality compute-debug-fun
+ debug
+ ("no" "minimal" "yes" "yes"))
+
+(define-optimization-quality preserve-single-use-debug-variables
+ (if (and (>= debug 2)
+ (< speed 3))
+ 3
+ 0)
+ ("no" "no" "no" "yes")
+ "When disabled, LET variable, which is never set and is referenced
+exactly once, is eliminated and the reference is substituted with the
+initial value. This allows better type inference and some algebraic
+optimizations.
+
+When enabled, the variable is preserved and can be seen in the
+debugger.")
+
+(define-optimization-quality insert-array-bounds-checks
+ (if (= safety 0) 0 3)
+ ("no" "yes" "yes" "yes"))
+
+(define-optimization-quality store-xref-data
+ (if (= space 3)
+ 0
+ 3)
+ ("no" "yes" "yes" "yes"))
+
+(define-optimization-quality store-coverage-data
+ 0
+ ("no" "no" "yes" "yes"))