Constify pointer::is_aligned{,to}#102753
Constify pointer::is_aligned{,to}#102753lukas-code wants to merge 7 commits intorust-lang:masterfrom
pointer::is_aligned{,to}#102753Conversation
|
(rust-highfive has picked a reviewer for you, use r? to override) |
|
Hey! It looks like you've submitted a new PR for the library teams! If this PR contains changes to any Examples of
Some changes occurred in compiler/rustc_codegen_cranelift cc @bjorn3 Some changes occurred to the CTFE / Miri engine cc @rust-lang/miri |
24241b0 to
bfb7b27
Compare
|
Cc @rust-lang/wg-const-eval I am not entirely sure about this... pointers are wonky in const and this function does not behave the way people will expect it to behave. Also I think we should keep this and |
yea, it should not add a new intrinsic, but be implemented in terms of the existing one. |
the same is true for align_offset and |
|
I think doing that would make those interfaces more popular, people should be using the standard library instead of re-implementing these. Right now I know of a few people who specifically avoid them because of the vague caveat in the docs. If we remove that, there should be a proper announcement of the change in direction we're taking in designing pointer interfaces. And I for one would like pressure for |
|
Pressure doesn't help. People doing the work help. :) |
I'm on it 😆 |
|
I think I meant a different kind of pressure. If I can tell a compelling story, it's easy to motivate community members to pitch in. |
|
I've put up an alternate PR which doesn't need a new intrinsic and uses |
bfb7b27 to
c2605f6
Compare
|
The Miri subtree was changed cc @rust-lang/miri |
|
Some changes occurred in const_evaluatable.rs cc @lcnr This PR changes MIR cc @oli-obk, @RalfJung, @JakobDegen, @davidtwco, @celinval, @vakaras Some changes occurred in src/librustdoc/clean/types.rs cc @camelid Some changes occurred in HTML/CSS themes. Some changes occurred in compiler/rustc_codegen_gcc cc @antoyo Some changes occurred in src/tools/clippy cc @rust-lang/clippy
cc @davidtwco, @compiler-errors, @JohnTitor, @estebank, @TaKO8Ki Some changes occurred in src/tools/rustfmt cc @rust-lang/rustfmt Some changes occurred to the CTFE / Miri engine cc @rust-lang/miri Some changes occurred to MIR optimizations cc @rust-lang/wg-mir-opt Some changes occurred in HTML/CSS/JS. cc @GuillaumeGomez, @Folyd, @jsha Some changes occurred in src/tools/cargo cc @ehuss
cc @davidtwco, @compiler-errors, @JohnTitor, @estebank, @TaKO8Ki Some changes occurred in need_type_info.rs cc @lcnr
cc @davidtwco, @compiler-errors, @JohnTitor, @estebank, @TaKO8Ki A change occurred in the Ayu theme. cc @Cldfire |
|
Whoops, sorry for the massive ping. Pushed something here that I shouldn't have. Anyway, closing this in favor of #102795. |
…lign-offset, r=oli-obk Constify `is_aligned` via `align_offset` Alternative to rust-lang#102753 Make `align_offset` work in const eval (and not always return `usize::MAX`) and then use that to constify `is_aligned{_to}`. Tracking Issue: rust-lang#104203
…et, r=oli-obk Constify `is_aligned` via `align_offset` Alternative to rust-lang/rust#102753 Make `align_offset` work in const eval (and not always return `usize::MAX`) and then use that to constify `is_aligned{_to}`. Tracking Issue: rust-lang/rust#104203
…et, r=oli-obk Constify `is_aligned` via `align_offset` Alternative to rust-lang/rust#102753 Make `align_offset` work in const eval (and not always return `usize::MAX`) and then use that to constify `is_aligned{_to}`. Tracking Issue: rust-lang/rust#104203
In this PR i've made
<*const T>::is_alignedand<*const T>::is_aligned_tounstably const.The main motivation here is to allow something like
debug_assert!(is_aligned_and_not_null(ptr))inconst fns without anyconst_eval_selecthacks.If we don't know the address of a pointer in const eval, this function only returns
trueif we know for sure that the pointer is aligned. This means that in some cases a pointer can never be aligned, which matches the behavior ofalign_offset1.Tracking issue for
is_aligned: #96284Footnotes
Note that currently
align_offsetwill always returnusize::MAXin CTFE, but it could return a useful value for some alignments in the future. ↩