Skip to content

Commit 6b1cf93

Browse files
Support #[align(…)] on fns in extern blocks
1 parent 8232ff2 commit 6b1cf93

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

compiler/rustc_passes/src/check_attr.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1898,7 +1898,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
18981898
/// Checks if the `#[align]` attributes on `item` are valid.
18991899
fn check_align(&self, span: Span, target: Target, align: Align, repr_span: Span) {
19001900
match target {
1901-
Target::Fn | Target::Method(_) => {}
1901+
Target::Fn | Target::Method(_) | Target::ForeignFn => {}
19021902
Target::Struct | Target::Union | Target::Enum => {
19031903
self.dcx().emit_err(errors::AlignShouldBeReprAlign {
19041904
span: repr_span,

tests/codegen/align-fn.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,17 @@ pub fn align_specified_twice_2() {}
6868
#[align(32)]
6969
#[align(256)]
7070
pub fn align_specified_twice_3() {}
71+
72+
const _: () = {
73+
// CHECK-LABEL: align_unmangled
74+
// CHECK-SAME: align 256
75+
#[unsafe(no_mangle)]
76+
#[align(32)]
77+
#[align(256)]
78+
extern "C" fn align_unmangled() {}
79+
};
80+
81+
unsafe extern "C" {
82+
#[align(256)]
83+
fn align_unmangled();
84+
}

0 commit comments

Comments
 (0)