diff options
| author | David Wood <david.wood2@arm.com> | 2024-09-23 18:46:23 +0100 |
|---|---|---|
| committer | David Wood <david.wood2@arm.com> | 2025-01-10 18:37:54 +0000 |
| commit | f86169a58f212b174a01aa721545df009e96bfda (patch) | |
| tree | 8dcb0c44ab5c144297435b7f5cf279f1af979d7a /compiler/rustc_passes/src/errors.rs | |
| parent | 336209eef13882bd1e211b24779584cb7ef911eb (diff) | |
| download | rust-f86169a58f212b174a01aa721545df009e96bfda.tar.gz rust-f86169a58f212b174a01aa721545df009e96bfda.zip | |
mir_transform: implement forced inlining
Adds `#[rustc_force_inline]` which is similar to always inlining but reports an error if the inlining was not possible, and which always attempts to inline annotated items, regardless of optimisation levels. It can only be applied to free functions to guarantee that the MIR inliner will be able to resolve calls.
Diffstat (limited to 'compiler/rustc_passes/src/errors.rs')
| -rw-r--r-- | compiler/rustc_passes/src/errors.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/compiler/rustc_passes/src/errors.rs b/compiler/rustc_passes/src/errors.rs index d95fa5db0ce..13da021c614 100644 --- a/compiler/rustc_passes/src/errors.rs +++ b/compiler/rustc_passes/src/errors.rs @@ -689,6 +689,24 @@ pub(crate) struct RustcPubTransparent { } #[derive(Diagnostic)] +#[diag(passes_rustc_force_inline)] +pub(crate) struct RustcForceInline { + #[primary_span] + pub attr_span: Span, + #[label] + pub span: Span, +} + +#[derive(Diagnostic)] +#[diag(passes_rustc_force_inline_coro)] +pub(crate) struct RustcForceInlineCoro { + #[primary_span] + pub attr_span: Span, + #[label] + pub span: Span, +} + +#[derive(Diagnostic)] #[diag(passes_link_ordinal)] pub(crate) struct LinkOrdinal { #[primary_span] |
