| Allegro CL version 8.2 Significantly revised from 8.1. 8.1 version |
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 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.
| Allegro CL version 8.2 Significantly revised from 8.1. 8.1 version |