From cc80c7f33dbff8790f777e80abc7add8fa2070fd Mon Sep 17 00:00:00 2001 From: Jayant Chauhan <0001jayant@gmail.com> Date: Tue, 13 Jan 2026 13:40:47 +0530 Subject: [PATCH] util/attributes: Error on #[repr] applied to functions The #[repr] attribute is only valid for structs, enums, and unions. Applying it to a function is invalid and should result in an error. This patch adds a check in the attribute visitor to reject #[repr] on functions, matching rustc behavior. Fixes Rust-GCC#4232 gcc/rust/ChangeLog: * util/rust-attributes.cc (AttributeChecker::check_attributes): Emit error for #[repr]. gcc/testsuite/ChangeLog: * rust/compile/issue-4232.rs: New test. Signed-off-by: Jayant Chauhan <0001jayant@gmail.com> --- gcc/rust/util/rust-attributes.cc | 6 ++++++ gcc/testsuite/rust/compile/issue-4232.rs | 3 +++ 2 files changed, 9 insertions(+) create mode 100644 gcc/testsuite/rust/compile/issue-4232.rs diff --git a/gcc/rust/util/rust-attributes.cc b/gcc/rust/util/rust-attributes.cc index 0e523468760..bf7f3d9827d 100644 --- a/gcc/rust/util/rust-attributes.cc +++ b/gcc/rust/util/rust-attributes.cc @@ -912,6 +912,12 @@ AttributeChecker::visit (AST::Function &fun) { check_link_section_attribute (attribute); } + else if (result.name == Attrs::REPR) + { + rust_error_at ( + attribute.get_locus (), + "attribute should be applied to a struct, enum, or union"); + } } if (fun.has_body ()) diff --git a/gcc/testsuite/rust/compile/issue-4232.rs b/gcc/testsuite/rust/compile/issue-4232.rs new file mode 100644 index 00000000000..fa12538808d --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-4232.rs @@ -0,0 +1,3 @@ +// { dg-options "-w" } +#[repr(C)] // { dg-error "attribute should be applied to a struct, enum, or union" } +fn a() {} \ No newline at end of file