implement zeroed and uninitialized with MaybeUninit#69922
implement zeroed and uninitialized with MaybeUninit#69922bors merged 4 commits intorust-lang:masterfrom
Conversation
|
r? @oli-obk |
This comment has been minimized.
This comment has been minimized.
|
@bors r+ |
|
📌 Commit c7eb0f2 has been approved by |
|
@bors rollup=never to make this bisectable |
|
@bors p=1 |
|
Giving back priority (#69922 (comment)) |
|
⌛ Testing commit c7eb0f2 with merge 954159622b131f800ed65cbd9e60585d03dac100... |
|
The job Click to expand the log.I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
|
💔 Test failed - checks-azure |
| // do the test in a new thread to avoid (spurious?) stack overflows | ||
| thread::spawn(|| { | ||
| let _memory: [u8; SIZE] = unsafe { init() }; | ||
| let _memory: [u8; SIZE] = unsafe { mem::zeroed() }; |
There was a problem hiding this comment.
This test is failing on the "noopt" builder. And that makes sense; there's now a function call "in the way" here where previously the intrinsic was expanded in-line to zero-initializing LLVM IR.
|
@oli-obk I added |
|
Maybe we should mark the wrapper functions as |
|
Sure, I can do that. Note that this already applied before this PR. |
|
Oh, right. so it's the more complex code in MaybeUninit that llvm doesn't handle without optimizations. I guess that's alright, though maybe we can teach mir optimizations about that at some point. @bors r+ |
|
📌 Commit a2160e6 has been approved by |
implement zeroed and uninitialized with MaybeUninit This is the second attempt of doing such a change (first PR: rust-lang#62150). The last change [got reverted](rust-lang#63343) because it [caused](rust-lang#62825) some [issues](rust-lang#52898 (comment)) in [code that incorrectly used these functions](AltF02/x11-rs#99). Since then, the [problematic code has been fixed](AltF02/x11-rs#101), and rustc [gained a lint](rust-lang#63346) that is able to detect many misuses of these functions statically and a [dynamic check that panics](rust-lang#66059) instead of causing UB for some incorrect uses. Fixes rust-lang#62825
|
@bors retry rollup=maybe Ignoring |
|
⌛ Testing commit a2160e6 with merge 1d1d192555bc828cdc42a61cd9b6a02c6b260960... |
implement zeroed and uninitialized with MaybeUninit This is the second attempt of doing such a change (first PR: rust-lang#62150). The last change [got reverted](rust-lang#63343) because it [caused](rust-lang#62825) some [issues](rust-lang#52898 (comment)) in [code that incorrectly used these functions](AltF02/x11-rs#99). Since then, the [problematic code has been fixed](AltF02/x11-rs#101), and rustc [gained a lint](rust-lang#63346) that is able to detect many misuses of these functions statically and a [dynamic check that panics](rust-lang#66059) instead of causing UB for some incorrect uses. Fixes rust-lang#62825
|
💔 Test failed - checks-azure |
|
"Received request to deprovision: The request was cancelled by the remote provider."...? @bors retry |
|
⌛ Testing commit a2160e6 with merge 8da5b0313f3288a314a81f571c81ac9957b0df5e... |
|
@bors retry rolled up. |
Rollup of 7 pull requests Successful merges: - #68746 (Make macro metavars respect (non-)hygiene) - #69688 (Move tidy check to mingw-check) - #69735 (bootstrap: Use hash to determine if sanitizers needs to be rebuilt) - #69922 (implement zeroed and uninitialized with MaybeUninit) - #69956 (Ensure HAS_FREE_LOCAL_NAMES is set for ReFree) - #70061 (Cosmetic fixes in documentation) - #70064 (Update books) Failed merges: r? @ghost
x11-dl was using std::mem::uninitialized incorrectly and when rustlang added MaybeUninit and intrinsic panics on UB caused by improper use of uninitialized (see rust-lang/rust/pull/69922) it caused issues with X11 initialization. x11-dl pr AltF02/x11-rs/pull/101 updated x11-dl to use MaybeUninit correctly
This is the second attempt of doing such a change (first PR: #62150). The last change got reverted because it caused some issues in code that incorrectly used these functions.
Since then, the problematic code has been fixed, and rustc gained a lint that is able to detect many misuses of these functions statically and a dynamic check that panics instead of causing UB for some incorrect uses.
Fixes #62825