VariablePackage: compilerToCDocOverviewCGDocRelNotesFAQIndexPermutedIndex
Allegro CL version 8.2
Significantly revised from 8.1.
8.1 version

declared-fixnums-remain-fixnums-switch

As with all 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 this switch is true, compiler will generate code that assumes the sum and difference of declared fixnums are fixnums. This switch affects + (e.g. (+ x y)) and also + analogs like 1+ and incf, and - (e.g. (- x y)) and also - analogs like 1- and decf. No assumptions are made about the results of multiplication, division, shifting, or any operation other than + and - and their analogs.

Initially true only if speed is 3 and safety is 0. Non-compliance note: having this switch be true is not compliant with ANSI Common Lisp, which requires that fixnum arithmetic work correctly in all cases. You may turn this switch off entirely by evaluating:

(setf comp:declared-fixnums-remain-fixnums-switch nil)

Warning: if this switch returns true during compilation but the sum or difference of two declared fixnums is not a fixnum, the compiled code will silently produce erroneous results.

See Declared fixnums example.

See compiling.htm for information on the compiler.


Copyright (c) 1998-2016, Franz Inc. Oakland, CA., USA. All rights reserved.
This page has had significant revisions compared to the 8.1 page.
Created 2016.6.21.

ToCDocOverviewCGDocRelNotesFAQIndexPermutedIndex
Allegro CL version 8.2
Significantly revised from 8.1.
8.1 version