Support #[align(…)] on fns in extern blocks
This commit is contained in:
@@ -1915,7 +1915,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
|
|||||||
/// Checks if the `#[align]` attributes on `item` are valid.
|
/// Checks if the `#[align]` attributes on `item` are valid.
|
||||||
fn check_align(&self, span: Span, target: Target, align: Align, repr_span: Span) {
|
fn check_align(&self, span: Span, target: Target, align: Align, repr_span: Span) {
|
||||||
match target {
|
match target {
|
||||||
Target::Fn | Target::Method(_) => {}
|
Target::Fn | Target::Method(_) | Target::ForeignFn => {}
|
||||||
Target::Struct | Target::Union | Target::Enum => {
|
Target::Struct | Target::Union | Target::Enum => {
|
||||||
self.dcx().emit_err(errors::AlignShouldBeReprAlign {
|
self.dcx().emit_err(errors::AlignShouldBeReprAlign {
|
||||||
span: repr_span,
|
span: repr_span,
|
||||||
|
|||||||
@@ -116,3 +116,17 @@ pub fn align_specified_twice_2() {}
|
|||||||
#[align(32)]
|
#[align(32)]
|
||||||
#[align(256)]
|
#[align(256)]
|
||||||
pub fn align_specified_twice_3() {}
|
pub fn align_specified_twice_3() {}
|
||||||
|
|
||||||
|
const _: () = {
|
||||||
|
// CHECK-LABEL: align_unmangled
|
||||||
|
// CHECK-SAME: align 256
|
||||||
|
#[unsafe(no_mangle)]
|
||||||
|
#[align(32)]
|
||||||
|
#[align(256)]
|
||||||
|
extern "C" fn align_unmangled() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
unsafe extern "C" {
|
||||||
|
#[align(256)]
|
||||||
|
fn align_unmangled();
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user