Skip to content

Commit 278f4f4

Browse files
Support #[align(…)] on fns in extern blocks
1 parent 308ef8d commit 278f4f4

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
@@ -1887,7 +1887,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
18871887
/// Checks if the `#[align]` attributes on `item` are valid.
18881888
fn check_align(&self, span: Span, target: Target, align: Align, repr_span: Span) {
18891889
match target {
1890-
Target::Fn | Target::Method(_) => {}
1890+
Target::Fn | Target::Method(_) | Target::ForeignFn => {}
18911891
Target::Struct | Target::Union | Target::Enum => {
18921892
self.dcx().emit_err(errors::AlignShouldBeReprAlign {
18931893
span: repr_span,

tests/codegen/align-fn.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,17 @@ pub fn align_specified_twice_2() {}
116116
#[align(32)]
117117
#[align(256)]
118118
pub fn align_specified_twice_3() {}
119+
120+
const _: () = {
121+
// CHECK-LABEL: align_unmangled
122+
// CHECK-SAME: align 256
123+
#[unsafe(no_mangle)]
124+
#[align(32)]
125+
#[align(256)]
126+
extern "C" fn align_unmangled() {}
127+
};
128+
129+
unsafe extern "C" {
130+
#[align(256)]
131+
fn align_unmangled();
132+
}

0 commit comments

Comments
 (0)