Use f{32,64}::to_bits for is_zero test in vec::SpecFromElem #49466
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.
vec::SpecFromElem provides an optimization to use calloc to fill a Vec
when the element given to fill the Vec is represented by 0.
For floats, the test for that currently used is
x == 0. && x.is_sign_positive()
. When compiled in a standalone function, rustcgenerates the following assembly:
A simpler test telling us whether the value is represented by 0, is
x.to_bits() == 0
, which rustc compiles to:Not that the test is hot in any way, but it also makes it clearer what
the intent in the rust code is.