(chill.info) Conversions
Info Catalog
(chill.info) Enhancements
(chill.info) Top
(chill.info) Separate compilation
Value and location conversions
******************************
Value and location conversions are highly dependent on the target
machine. They are also very loosely specified in the 1988 standard.
(The 1992 standard seems an improvement.)
The GNU Chill compiler interprets `MODE(EXP)' as follows:
* If EXP is a referable location, and the size of (the mode of) EXP
is the same as the size of MODE, a location conversion is used.
It is implemented exactly as: `(REFMODE(-> EXP))->', where
REFMODE is a synmode for `REF MODE'.
The programmer is responsible for making sure that alignment
restrictions on machine addresses are not violated.
If both MODE and the mode of EXP are discrete modes, alignment
should not be a problem, and we get the same conversion as a
standard value conversion.
* If EXP is a constant, and the size of (the mode of) EXP is the
same as the size of MODE, then a value conversion is performed.
This conversion is done at compile time, and it has not been
implemented for all types. Specifically, converting to or from a
floating-point type is not implemented.
* If both MODE and the mode of EXP are discrete modes, then a value
conversion is performed, as described in Z.200.
* If both MODE and the mode of EXP are reference modes, then a value
conversion is allowed. The same is true is one mode is a
reference mode, and the other is an integral mode of the same size.
Info Catalog
(chill.info) Enhancements
(chill.info) Top
(chill.info) Separate compilation
automatically generated byinfo2html