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

add naked_functions_target_feature unstable feature #138570

Merged

Conversation

folkertdev
Copy link
Contributor

tracking issue: #138568

tagging #134213 #90957

This PR puts #[target_feature(/* ... */)] on #[naked] functions behind its own feature gate, so that naked functions can be stabilized. It turns out that supporting target_feature on naked functions is tricky on some targets, so we're splitting it out to not block stabilization of naked functions themselves. See the tracking issue for more information and workarounds.

Note that at the time of writing, the target_features attribute is ignored when generating code for naked functions.

r? @Amanieu

@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Mar 16, 2025
@rustbot
Copy link
Collaborator

rustbot commented Mar 16, 2025

Some changes occurred in compiler/rustc_passes/src/check_attr.rs

cc @jdonszelmann

@rust-log-analyzer

This comment has been minimized.

@folkertdev folkertdev force-pushed the naked-function-target-feature-gate branch from e92560c to c261426 Compare March 16, 2025 21:07
@Amanieu
Copy link
Member

Amanieu commented Mar 20, 2025

@bors r+

@bors
Copy link
Contributor

bors commented Mar 20, 2025

📌 Commit c261426 has been approved by Amanieu

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 20, 2025
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Mar 21, 2025
…eature-gate, r=Amanieu

add `naked_functions_target_feature` unstable feature

tracking issue: rust-lang#138568

tagging rust-lang#134213 rust-lang#90957

This PR puts `#[target_feature(/* ... */)]` on `#[naked]` functions behind its own feature gate, so that naked functions can be stabilized. It turns out that supporting `target_feature` on naked functions is tricky on some targets, so we're splitting it out to not block stabilization of naked functions themselves. See the tracking issue for more information and workarounds.

Note that at the time of writing, the `target_features` attribute is ignored when generating code for naked functions.

r? `@Amanieu`
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 21, 2025
Rollup of 10 pull requests

Successful merges:

 - rust-lang#138364 (ports the compiler test cases to new rust_intrinsic format)
 - rust-lang#138570 (add `naked_functions_target_feature` unstable feature)
 - rust-lang#138623 ([bootstrap] Use llvm_runtimes for compiler-rt)
 - rust-lang#138627 (Autodiff cleanups)
 - rust-lang#138669 (tests: accept some noise from LLVM 21 in symbols-all-mangled)
 - rust-lang#138706 (Improve bootstrap git modified path handling)
 - rust-lang#138709 (Update GCC submodule)
 - rust-lang#138717 (Add an attribute that makes the spans from a macro edition 2021, and fix pin on edition 2024 with it)
 - rust-lang#138721 (Use explicit cpu in some asm and codegen tests.)
 - rust-lang#138728 (Update `compiler-builtins` to 0.1.152)

r? `@ghost`
`@rustbot` modify labels: rollup

try-job: aarch64-apple
try-job: x86_64-msvc-1
try-job: x86_64-gnu
try-job: dist-i586-gnu-i586-i686-musl
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 21, 2025
…iaskrgr

Rollup of 10 pull requests

Successful merges:

 - rust-lang#138364 (ports the compiler test cases to new rust_intrinsic format)
 - rust-lang#138570 (add `naked_functions_target_feature` unstable feature)
 - rust-lang#138623 ([bootstrap] Use llvm_runtimes for compiler-rt)
 - rust-lang#138627 (Autodiff cleanups)
 - rust-lang#138669 (tests: accept some noise from LLVM 21 in symbols-all-mangled)
 - rust-lang#138706 (Improve bootstrap git modified path handling)
 - rust-lang#138709 (Update GCC submodule)
 - rust-lang#138717 (Add an attribute that makes the spans from a macro edition 2021, and fix pin on edition 2024 with it)
 - rust-lang#138721 (Use explicit cpu in some asm and codegen tests.)
 - rust-lang#138728 (Update `compiler-builtins` to 0.1.152)

r? `@ghost`
`@rustbot` modify labels: rollup

try-job: aarch64-apple
try-job: x86_64-msvc-1
try-job: x86_64-gnu
try-job: dist-i586-gnu-i586-i686-musl
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 21, 2025
…iaskrgr

Rollup of 9 pull requests

Successful merges:

 - rust-lang#138364 (ports the compiler test cases to new rust_intrinsic format)
 - rust-lang#138570 (add `naked_functions_target_feature` unstable feature)
 - rust-lang#138623 ([bootstrap] Use llvm_runtimes for compiler-rt)
 - rust-lang#138627 (Autodiff cleanups)
 - rust-lang#138669 (tests: accept some noise from LLVM 21 in symbols-all-mangled)
 - rust-lang#138706 (Improve bootstrap git modified path handling)
 - rust-lang#138709 (Update GCC submodule)
 - rust-lang#138717 (Add an attribute that makes the spans from a macro edition 2021, and fix pin on edition 2024 with it)
 - rust-lang#138721 (Use explicit cpu in some asm and codegen tests.)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit c354a97 into rust-lang:master Mar 21, 2025
6 checks passed
@rustbot rustbot added this to the 1.87.0 milestone Mar 21, 2025
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Mar 21, 2025
Rollup merge of rust-lang#138570 - folkertdev:naked-function-target-feature-gate, r=Amanieu

add `naked_functions_target_feature` unstable feature

tracking issue: rust-lang#138568

tagging rust-lang#134213 rust-lang#90957

This PR puts `#[target_feature(/* ... */)]` on `#[naked]` functions behind its own feature gate, so that naked functions can be stabilized. It turns out that supporting `target_feature` on naked functions is tricky on some targets, so we're splitting it out to not block stabilization of naked functions themselves. See the tracking issue for more information and workarounds.

Note that at the time of writing, the `target_features` attribute is ignored when generating code for naked functions.

r? ``@Amanieu``
@traviscross traviscross added the F-naked_functions_target_feature `#![feature(naked_functions_target_feature)]` label Mar 23, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-attributes Area: Attributes (`#[…]`, `#![…]`) F-naked_functions_target_feature `#![feature(naked_functions_target_feature)]` 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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants