Skip to content

Commit a1cefee

Browse files
Support #[align(…)] on fns in extern blocks
1 parent 97a7b9b commit a1cefee

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
@@ -1915,7 +1915,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
19151915
/// Checks if the `#[align]` attributes on `item` are valid.
19161916
fn check_align(&self, span: Span, target: Target, align: Align, repr_span: Span) {
19171917
match target {
1918-
Target::Fn | Target::Method(_) => {}
1918+
Target::Fn | Target::Method(_) | Target::ForeignFn => {}
19191919
Target::Struct | Target::Union | Target::Enum => {
19201920
self.dcx().emit_err(errors::AlignShouldBeReprAlign {
19211921
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)