]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
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)
committerP-E-P <32375388+P-E-P@users.noreply.github.com>
Wed, 29 May 2024 08:58:48 +0000 (08:58 +0000)
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 bc5bc944e772bb5d9db56a081a119dc7c9343064..a6816cf1603aec4453145cea4774abc44938232e 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 a8551c07dba6349dde0c240fa9d61a35763ee3d1..a7eaf9ffa70c5a08219b30a0e6ac7739fb0f44d4 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 84d1781d0b360c4e7c4c70d0368f5283100ade0c..33166673c28afb943921339c589ee7c0f300b952 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() {}