Start Back Next End
  
ZBasic Language Reference
157
ZBasic Microcontrollers
Optimization Type
Description
constant-folding
Expressions involving constants may be evaluated at compile-time. 
Note, particularly, that some System Library function invocations
having parameters known to be constant may be replaced by the
equivalent value.  In some cases the same strategy may be applied to
user-defined functions.
constant-propagation
The use of expressions involving variables known to be constant may
be replaced with the constant value.
expression-order
Expressions may be rearranged to facilitate additional optimizations. 
Such rearrangement will never be performed across parenthetical
boundaries if the option preserve-parens is specified.
inline
Small subroutines and functions may be generated in-line instead of
generating a routine invocation.
optimize
Refers to all affirmative optimization types collectively.  The only
optimization type not included in this group is preserve-parens.
preserve-parens
The presence of this options restricts the use of expression
optimizations to parenthetical boundaries.
strength-reduction
Reduction-in-strength optimizations may be performed, e.g.
multiplication by a power of two replaced by left shift.
string-pooling
Code size is reduced by detecting identical strings.  Each string
appears just once in Program Memory but may be referred to in
multiple places.
unreachable-code
Code that cannot possibly be executed may be eliminated.
unreferenced-code
Routines that are not used are not included in the generated code.
unreferenced-vars
Variables that are not referenced or are eliminated by optimization
may not be allocated space.
use-identities
Expression complexity may be reduced by applying algebraic or
logical identities.  For example, i * j can be replaced by i if j is
known to have the value 1.
useless-code
Code that is known to have no useful effect may be eliminated.  For
example, assigning a value to a local variable that is never used is
considered useless.
The invocation option –-help-optimize displays similar information and also indicates which
optimizations are on by default.
--out=<file>
This option explicitly specifies the name for the file for the generated code.  In the absence of this option,
the output file name is derived from either the project file, if specified, or the first file compiled.  If an
earlier or later option specifies that no code should be generated this option is ignored.
--overload
This option enables procedure overloading.  This option is implied by –-objects.
--project=<file>
This option specifies the name of a project file.  A project file is similar to an arguments file in that it may
contain additional compiler options and filenames that are processed before processing subsequent
command line options.  Additionally, however, several other file names (e.g. map file, output file) are
derived from the first-specified project’s filename in the absence of other overriding options.  Project files
may contain blank lines and comment lines (beginning with a pound sign or an apostrophe).  Project files
may not be nested but an arguments file may be specified within a project file and vice versa.  
Previous page Top Next page