https://gcc.gnu.org/g:1721aea7f8ec8aae3aaf22aa2245cac7cfe020fe

commit r16-7770-g1721aea7f8ec8aae3aaf22aa2245cac7cfe020fe
Author: Jayant Chauhan <[email protected]>
Date:   Tue Jan 13 13:40:47 2026 +0530

    gccrs: 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 <[email protected]>

Diff:
---
 gcc/rust/util/rust-attributes.cc         | 6 ++++++
 gcc/testsuite/rust/compile/issue-4232.rs | 3 +++
 2 files changed, 9 insertions(+)

diff --git a/gcc/rust/util/rust-attributes.cc b/gcc/rust/util/rust-attributes.cc
index 0e5234687602..bf7f3d9827d6 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 000000000000..fa12538808d8
--- /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

Reply via email to