]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Allow rustc_const_stable and rustc_const_unstable
authorOwen Avery <powerboat9.gamer@gmail.com>
Thu, 29 Feb 2024 02:00:08 +0000 (21:00 -0500)
committerArthur Cohen <arthur.cohen@embecosm.com>
Mon, 17 Mar 2025 15:35:29 +0000 (16:35 +0100)
gcc/rust/ChangeLog:

* expand/rust-macro-builtins.cc
(MacroBuiltin::builtin_transcribers):
Add entries for "rustc_const_stable" and "rustc_const_unstable".
* util/rust-attributes.cc
(__definitions): Add entries for RUSTC_CONST_STABLE and
RUSTC_CONST_UNSTABLE.
* util/rust-attribute-values.h
(Attributes::RUSTC_CONST_STABLE): New.
(Attributes::RUSTC_CONST_UNSTABLE): New.

gcc/testsuite/ChangeLog:

* rust/compile/rustc_const_stable.rs:
Enable feature rustc_attrs, expect no errors.
* rust/compile/rustc_const_unstable.rs: New test.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
gcc/rust/expand/rust-macro-builtins.cc
gcc/rust/util/rust-attribute-values.h
gcc/rust/util/rust-attributes.cc
gcc/testsuite/rust/compile/rustc_const_stable.rs
gcc/testsuite/rust/compile/rustc_const_unstable.rs [new file with mode: 0644]

index ed6c0e9db973e298d8c295324696202ff5a778bf..61b677ac075435fa300ed4977a8d3e0772bbecec 100644 (file)
@@ -123,6 +123,8 @@ std::unordered_map<std::string, AST::MacroTranscriberFunc>
     {"test_case", MacroBuiltin::sorry},
     {"global_allocator", MacroBuiltin::sorry},
     {"cfg_accessible", MacroBuiltin::sorry},
+    {"rustc_const_stable", MacroBuiltin::sorry},
+    {"rustc_const_unstable", MacroBuiltin::sorry},
     /* Derive builtins do not need a real transcriber, but still need one. It
        should however never be called since builtin derive macros get expanded
        differently, and benefit from knowing on what kind of items they are
index e51ec0766706c59d59df80d16af215e7c1fc9639..fec73b17c3ed707f20c44823928cc25d40d4b977 100644 (file)
@@ -53,6 +53,8 @@ public:
     = "rustc_inherit_overflow_checks";
   static constexpr auto &STABLE = "stable";
   static constexpr auto &UNSTABLE = "unstable";
+  static constexpr auto &RUSTC_CONST_STABLE = "rustc_const_stable";
+  static constexpr auto &RUSTC_CONST_UNSTABLE = "rustc_const_unstable";
 };
 } // namespace Values
 } // namespace Rust
index aef51b7f4b1703363b96b3e045eef9c938df89cc..c9e376400fdd4791c6641343d3ff7e1f6729bb2d 100644 (file)
@@ -61,7 +61,10 @@ static const BuiltinAttrDefinition __definitions[]
      {Attrs::RUSTC_DEPRECATED, STATIC_ANALYSIS},
      {Attrs::RUSTC_INHERIT_OVERFLOW_CHECKS, CODE_GENERATION},
      {Attrs::STABLE, STATIC_ANALYSIS},
-     {Attrs::UNSTABLE, STATIC_ANALYSIS}};
+     {Attrs::UNSTABLE, STATIC_ANALYSIS},
+     // assuming we keep these for static analysis
+     {Attrs::RUSTC_CONST_STABLE, STATIC_ANALYSIS},
+     {Attrs::RUSTC_CONST_UNSTABLE, STATIC_ANALYSIS}};
 
 BuiltinAttributeMappings *
 BuiltinAttributeMappings::get ()
index 9208b1ab3b62c30ccc9613e230a4db0636bb953c..a45355de6b376dfacac8af23eeb5c42d6733cd93 100644 (file)
@@ -1,2 +1,4 @@
+#![feature(rustc_attrs)]
+
 #[rustc_const_stable(feature = "const_ascii_ctype_on_intrinsics", since = "1.47.0")]
-pub fn foo() {} // { dg-error "macro not found" "" { target *-*-* } .-1 }
+pub fn foo() {}
diff --git a/gcc/testsuite/rust/compile/rustc_const_unstable.rs b/gcc/testsuite/rust/compile/rustc_const_unstable.rs
new file mode 100644 (file)
index 0000000..6cedefa
--- /dev/null
@@ -0,0 +1,4 @@
+#![feature(rustc_attrs)]
+
+#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "1234")]
+pub fn foo() {}