Skip to content

Conversation

@Dylan-DPC
Copy link
Member

Successful merges:

Failed merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

notriddle and others added 14 commits March 25, 2022 13:57
…f feature gives change of builded crates: 238 -> 224.
…leywiser parallel_compiler: hide dependencies behind feature Separate dependencies for `parallel_compiler` feature, so they will not be compiled if feature not selected, reducing number of compiled crates from 238 to 224.
…wesleywiser diagnostics: correct generic bounds with doubled colon Fixes rust-lang#95208
Fix yet another Box<T, A> ICE Fixes rust-lang#95036. This widens the special case from rust-lang#94414 to make sure that boxes with a custom allocator are never directly dereferenced.
Link to std::io's platform-specific behavior disclaimer This PR adds some links in standard library documentation to point to https://doc.rust-lang.org/std/io/index.html#platform-specific-behavior. > ### Platform-specific behavior > > Many I/O functions throughout the standard library are documented to indicate what various library or syscalls they are delegated to. This is done to help applications both understand what’s happening under the hood as well as investigate any possibly unclear semantics. Note, however, that this is informative, not a binding contract. The implementation of many of these functions are subject to change over time and may call fewer or more syscalls/library functions. Many of the `std::fs` APIs already link to this disclaimer when discussing system calls.
…y, r=scottmcm Inline u8::is_utf8_char_boundary Since Rust beta, Rust is incapable of inlining this function in the following example function. ```rust pub fn safe_substr_to(s: &str, mut length: usize) -> &str { loop { if let Some(s) = s.get(..length) { return s; } length -= 1; } } ``` When compiled with beta or nightly compiler on Godbolt with `-C opt-level=3` flag it prints the following assembly. ```asm example::safe_substr_to: push r15 push r14 push r12 push rbx push rax mov r14, rdi test rdx, rdx je .LBB0_8 mov rbx, rdx mov r15, rsi mov r12, qword ptr [rip + core::num::<impl u8>::is_utf8_char_boundary@GOTPCREL] jmp .LBB0_4 .LBB0_2: je .LBB0_9 .LBB0_3: add rbx, -1 je .LBB0_8 .LBB0_4: cmp rbx, r15 jae .LBB0_2 movzx edi, byte ptr [r14 + rbx] call r12 test al, al je .LBB0_3 mov r15, rbx jmp .LBB0_9 .LBB0_8: xor r15d, r15d .LBB0_9: mov rax, r14 mov rdx, r15 add rsp, 8 pop rbx pop r12 pop r14 pop r15 ret ``` `qword ptr [rip + core::num::<impl u8>::is_utf8_char_boundary@GOTPCREL]` is not inlined. `-C remark=all` outputs the following message: ``` note: /rustc/7bccde19767082c7865a12902fa614ed4f8fed73/library/core/src/str/mod.rs:214:25: inline: _ZN4core3num20_$LT$impl$u20$u8$GT$21is_utf8_char_boundary17hace9f12f5ba07a7fE will not be inlined into _ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hf2587e9a6b8c5e43E because its definition is unavailable ``` Stable compiler outputs more reasonable code: ```asm example::safe_substr_to: mov rcx, rdx mov rax, rdi test rdx, rdx je .LBB0_9 mov rdx, rsi jmp .LBB0_4 .LBB0_2: cmp rdx, rcx je .LBB0_7 .LBB0_3: add rcx, -1 je .LBB0_9 .LBB0_4: cmp rcx, rdx jae .LBB0_2 cmp byte ptr [rax + rcx], -64 jl .LBB0_3 mov rdx, rcx .LBB0_7: ret .LBB0_9: xor edx, edx ret ```
@rustbot rustbot added T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Mar 28, 2022
@Dylan-DPC
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Mar 28, 2022

📌 Commit 1f33cd1 has been approved by Dylan-DPC

@bors bors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Mar 28, 2022
@bors
Copy link
Collaborator

bors commented Mar 28, 2022

⌛ Testing commit 1f33cd1 with merge ee915c3...

@bors
Copy link
Collaborator

bors commented Mar 28, 2022

☀️ Test successful - checks-actions
Approved by: Dylan-DPC
Pushing ee915c3 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Mar 28, 2022
@bors bors merged commit ee915c3 into rust-lang:master Mar 28, 2022
@rustbot rustbot added this to the 1.61.0 milestone Mar 28, 2022
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (ee915c3): comparison url.

Summary: This benchmark run did not return any relevant results. 53 results were found to be statistically significant but too small to be relevant.

If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf.

@rustbot label: -perf-regression

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

9 participants