You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The intrinsic function OUT_OF_RANGE() lacks support in lowering
and the runtime. This patch obviates a need for any such support
by implementing OUT_OF_RANGE() via rewriting in semantics.
This rewriting of OUT_OF_RANGE() calls replaces the existing code
that folds OUT_OF_RANGE() calls with constant arguments.
Some changes and fixes were necessary outside of OUT_OF_RANGE()'s
folding code (now rewriting code), whose testing exposed some
other issues worth fixing.
- The common::RealDetails<> template class was recoded in terms
of a new base class with a constexpr constructor, so that the
the characteristics of the various REAL kinds could be queried
dynamically as well. This affected some client usage.
- There were bugs in the code that folds TRANSFER() when the
type of X or MOLD was REAL(10) -- this is a type that occupies
16 bytes per element in execution memory but only 10 bytes
(was 12) in the data of std::vector<Scalar<>> in a Constant<>.
- Folds of REAL->REAL conversions weren't preserving infinities.
0 commit comments