Add runtime overflow checker #463
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The interface is
would_value_overflow<Op>(x), wherexis a value oftype
OpInput<Op>. This interface is already good enough to replaceboth the implicit-rep and explicit-rep versions of the runtime overflow
checkers! Except that we can't just yet, because we're not actually
using an operation to implement our conversions.
Along the way, we add (and test) some other helpful utilities, some of
which are useful in other places. For example, we'll make use of
CanOverflowAbovein our implicit conversion policy.MinValueCheckerandMaxValueCheckerare designed to producefunctions that unconditionally return
falsefor theiris_too_XX()members. This should make it very easy for the compiler to produce very
efficient assembly for
would_value_overflow().Helps #349: at this point, the
:overflow_boundarytarget should becomplete and ready for production!