<!-- NOTE: For library features, please use the "Library Tracking Issue" template instead. Thank you for creating a tracking issue! 📜 Tracking issues are for tracking a feature from implementation to stabilisation. Make sure to include the relevant RFC for the feature if it has one. Otherwise provide a short summary of the feature and link any relevant PRs or issues, and remove any sections that are not relevant to the feature. Remember to add team labels to the tracking issue. For a language team feature, this would e.g., be `T-lang`. Such a feature should also be labeled with e.g., `F-my_feature`. This label is used to associate issues (e.g., bugs and design questions) to the feature. --> This feature allows specifying an alignment for function items by adding the `#[repr(align(...))]` attribute to them. The feature gate for the issue is `#![feature(fn_align)]` ### Example ```rust #[align(16)] fn requires_alignment() { // ... } ``` ### Steps <!-- Include each step required to complete the feature. Typically this is a PR implementing a feature, followed by a PR that stabilises the feature. However for larger features an implementation could be broken up into multiple PRs. --> - [ ] Accept RFC - https://github.com/rust-lang/rfcs/pull/3806 - [X] Implementation (https://github.com/rust-lang/rust/pull/81234) - [ ] Adjust documentation - [ ] Stabilization PR - https://github.com/rust-lang/rust/pull/140261 ### Blocking issues - https://github.com/rust-lang/rust/issues/143368 - What does this mean *on the language level*? It can't be quite as easy as "function pointers, cast to an integer, are divisible by the alignment" -- that's [incorrect on ARM](https://github.com/rust-lang/rust/issues/144661).