aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Avery <powerboat9.gamer@gmail.com>2024-02-28 21:00:08 -0500
committerP-E-P <32375388+P-E-P@users.noreply.github.com>2024-05-29 08:58:48 +0000
commit646046091b703621c4ba63adb76179c11a1dbb92 (patch)
treefe7de180536ae2808b74bb03aaeb54f15ed3471f
parent9ade15d37ee0b09270fe0d0fbc9b000c943f2614 (diff)
downloadgcc-646046091b703621c4ba63adb76179c11a1dbb92.zip
gcc-646046091b703621c4ba63adb76179c11a1dbb92.tar.gz
gcc-646046091b703621c4ba63adb76179c11a1dbb92.tar.bz2
Allow rustc_const_stable and rustc_const_unstable
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>
-rw-r--r--gcc/rust/expand/rust-macro-builtins.cc2
-rw-r--r--gcc/rust/util/rust-attribute-values.h2
-rw-r--r--gcc/rust/util/rust-attributes.cc5
-rw-r--r--gcc/testsuite/rust/compile/rustc_const_stable.rs4
-rw-r--r--gcc/testsuite/rust/compile/rustc_const_unstable.rs4
5 files changed, 15 insertions, 2 deletions
diff --git a/gcc/rust/expand/rust-macro-builtins.cc b/gcc/rust/expand/rust-macro-builtins.cc
index bc5bc94..a6816cf 100644
--- a/gcc/rust/expand/rust-macro-builtins.cc
+++ b/gcc/rust/expand/rust-macro-builtins.cc
@@ -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
diff --git a/gcc/rust/util/rust-attribute-values.h b/gcc/rust/util/rust-attribute-values.h
index a8551c0..a7eaf9f 100644
--- a/gcc/rust/util/rust-attribute-values.h
+++ b/gcc/rust/util/rust-attribute-values.h
@@ -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
diff --git a/gcc/rust/util/rust-attributes.cc b/gcc/rust/util/rust-attributes.cc
index 84d1781..3316667 100644
--- a/gcc/rust/util/rust-attributes.cc
+++ b/gcc/rust/util/rust-attributes.cc
@@ -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 ()
diff --git a/gcc/testsuite/rust/compile/rustc_const_stable.rs b/gcc/testsuite/rust/compile/rustc_const_stable.rs
index 9208b1a..a45355d 100644
--- a/gcc/testsuite/rust/compile/rustc_const_stable.rs
+++ b/gcc/testsuite/rust/compile/rustc_const_stable.rs
@@ -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
index 0000000..6cedefa
--- /dev/null
+++ b/gcc/testsuite/rust/compile/rustc_const_unstable.rs
@@ -0,0 +1,4 @@
+#![feature(rustc_attrs)]
+
+#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "1234")]
+pub fn foo() {}