Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow inlining for Atomic*::from_ptr #138804

Merged
merged 1 commit into from
Mar 22, 2025

Conversation

tgross35
Copy link
Contributor

Currently this cannot be inlined, which among other things means it can't be used in compiler-builtins 1. These are trivial functions that should be inlineable, so add #[inline].

r? @RalfJung

Currently this cannot be inlined, which among other things means it
can't be used in `compiler-builtins` [1]. These are trivial functions
that should be inlineable, so add `#[inline]`.

[1]: rust-lang/compiler-builtins#790 (comment)
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Mar 21, 2025
@RalfJung
Copy link
Member

@bors r+ rollup

@bors
Copy link
Contributor

bors commented Mar 21, 2025

📌 Commit eb2a2f8 has been approved by RalfJung

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Mar 21, 2025
@saethlin
Copy link
Member

saethlin commented Mar 22, 2025

Currently this cannot be inlined

I believe this statement to be wrong. If you call this function in an optimized build, you will see that it is currently inlined reliably: https://godbolt.org/z/YGE5T1Ghz

I am bringing this up in an attempt to be helpful; many contributors abuse the term "inline" to mean either the compiler optimization or LocalCopy instantiation without being clear which, and those concepts are almost entirely orthogonal in theory, but they are conflated (to our detriment) by the current compiler implementation.

@RalfJung
Copy link
Member

RalfJung commented Mar 22, 2025

Yeah it's the usual issue that "inline" is often used to mean "MIR-to-LLVM translation happens in the reverse dependencies of this crate". That's the property we actually need here, and #[inline] is how we get it. But LLVM can inline more things than that ofc. (The MIR inliner cannot, AFAIK?)

Or is that not right? Is the PR not actually going to help for the problem we're trying to solve?

@saethlin
Copy link
Member

(The MIR inliner cannot, AFAIK?)

The MIR inliner can inline anything that is #[inline], generic, or cross_crate_inlinable, which already includes the function in question.

Is the PR not actually going to help for the problem we're trying to solve?

This PR will fix the compile error that this was created in response to, because with this PR Atomic*::from_ptr will get LocalCopy codegen in all builds, not just optimized builds.

bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 22, 2025
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#138609 (Add stack overflow handler for cygwin)
 - rust-lang#138639 (Clean UI tests 2 of n)
 - rust-lang#138773 (catch_unwind intrinsic: document return value)
 - rust-lang#138782 (test(ui): add tuple-struct-where-clause-suggestion ui test for rust-lang#91520)
 - rust-lang#138794 (expand: Do not report `cfg_attr` traces on macros as unused attributes)
 - rust-lang#138801 (triagebot: add autolabel rules for D-* and L-*)
 - rust-lang#138804 (Allow inlining for `Atomic*::from_ptr`)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 2644500 into rust-lang:master Mar 22, 2025
6 checks passed
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Mar 22, 2025
Rollup merge of rust-lang#138804 - tgross35:atomic-from-ptr-inline, r=RalfJung

Allow inlining for `Atomic*::from_ptr`

Currently this cannot be inlined, which among other things means it can't be used in `compiler-builtins` [1]. These are trivial functions that should be inlineable, so add `#[inline]`.

[1]: rust-lang/compiler-builtins#790 (comment)
@rustbot rustbot added this to the 1.87.0 milestone Mar 22, 2025
@tgross35 tgross35 deleted the atomic-from-ptr-inline branch March 23, 2025 01:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-libs Relevant to the library team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants