Variable | Package: compiler | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 10.1 Moderately revised from 10.0. 10.0 version

## trust-dynamic-extent-declarations-switch

As with most compiler switch variables, the value of this variable can be `t`, `nil`, or a function object that accepts five arguments and returns `t` or `nil`. The arguments passed to the function will be the values of the safety, space, speed, debug, and compilation-speed optimization qualities, in that order. `nil` is equivalent to a function that always returns `nil` and `t` to a function that always returns `t`. When the value is a function and we say `t` (or true) or `nil` (or false) in the text below, we mean that the function returns, respectively, `t` or `nil`.

If true, and if the compiler trusts declarations (that is `trust-declarations-switch` is true), the compiler will trust dynamic-extent declarations in code and produce code (when it can) that is optimized given the declarations. One optimization that is possible when objects are declared dynamic-extent (and the declaration is trusted) is stack allocation (where the object is stored on the stack and not in memory, see Stack consing, avoiding consing using apply, and stack allocation in compiling.htm).

Having a switch which controls dynamic-extent declarations when declarations are trusted (via the general `trust-declarations-switch`) allows dynamic-extent declarations to be ignored while other declarations are trusted. When using multiprocessing, trusting `dynamic-extent` declarations may be unsafe when trusting other declarations is safe. See Stack consing, avoiding consing using apply, and stack allocation in compiling.htm for a discussion of the issues surrounding multiprocessing and dynamic extent.

If `trust-declarations-switch` is `nil`, this switch is ignored.

Initially true when speed is greater than or equal to safety, which means that this switch will be true in the default when the `trust-declarations-switch` is true in the default (which is when speed is greater than safety). If there is an issue with multiprocessing, you should bind or set this switch to `nil`, or design your own function.

See compiling.htm for information on the compiler.

Copyright (c) 1998-2022, Franz Inc. Lafayette, CA., USA. All rights reserved.
This page has had moderate revisions compared to the 10.0 page.
Created 2019.8.20.

|  | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 10.1 Moderately revised from 10.0. 10.0 version