Skip to content

remove support for extern-block const intrinsics#132492

Merged
bors merged 5 commits intorust-lang:masterfrom
RalfJung:const-intrinsics
Nov 5, 2024
Merged

remove support for extern-block const intrinsics#132492
bors merged 5 commits intorust-lang:masterfrom
RalfJung:const-intrinsics

Conversation

@RalfJung
Copy link
Member

@RalfJung RalfJung commented Nov 2, 2024

This converts all const-callable intrinsics into the "new" form of a regular fn with #[rustc_intrinsic] attribute. That simplifies some of the logic since those functions can be marked const fn like regular functions, so intrinsics no longer need a special case to be considered const-callable at all.

I also added a new attribute #[rustc_const_stable_intrinsic] to mark an intrinsic as being ready to be exposed on stable. Previously we used the #[rustc_const_stable_indirect] attribute for that, but that attribute had a dual role -- when used on a regular function, it is an entirely safe marker to make this function part of recursive const stability, but on an intrinsic it is a trusted marker requiring special care. It's not great for the same attribute to be sometimes fully checked and safe, and sometimes trusted and requiring special care, so I split this into two attributes.

This also fixes #122652 by accepting intrinsics as const-stable if they have a fallback body that is recursively const-stable.

The library changes are best reviewed with whitespace hidden.

r? @compiler-errors

Loading
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-compiler Relevant to the compiler team, which will review and decide on the PR/issue. 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.

Disable const-stability checking for intrinsics with fallback MIR?

7 participants