]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Make some general improvements
authorOwen Avery <powerboat9.gamer@gmail.com>
Sun, 14 Dec 2025 21:37:31 +0000 (16:37 -0500)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 23 Dec 2025 11:16:48 +0000 (12:16 +0100)
gcc/rust/ChangeLog:

* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Visit the
generic parameters of TraitItemType.
* expand/rust-expand-visitor.h (is_derive): Remove defunct
function declaration.
* hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Remove
unnecessary copy.
* resolve/rust-name-resolver.cc (Resolver::Resolver): Skip
generating builtins for the old resolver.
* util/rust-hir-map.cc (Mappings::get_next_node_id): Detect node
id exhaustion.
* util/rust-mapping-common.h (MAX_NODEID): Add macro definition.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
gcc/rust/ast/rust-ast-visitor.cc
gcc/rust/expand/rust-expand-visitor.h
gcc/rust/hir/rust-ast-lower-item.cc
gcc/rust/resolve/rust-name-resolver.cc
gcc/rust/util/rust-hir-map.cc
gcc/rust/util/rust-mapping-common.h

index afdd2b19dac4ada3d82c7a976f3beae61919283c..a9e2f053a011865fefe73ce2d557302c3bf0db2d 100644 (file)
@@ -1029,6 +1029,8 @@ void
 DefaultASTVisitor::visit (AST::TraitItemType &item)
 {
   visit_outer_attrs (item);
+  for (auto &generic : item.get_generic_params ())
+    visit (generic);
   for (auto &bound : item.get_type_param_bounds ())
     visit (bound);
 }
index b79eb663c6c3b1495662b1736f4248ee4a751d48..0f92268eefea3335e8109b758960a2152573eeae 100644 (file)
 
 namespace Rust {
 
-/**
- * Whether or not an attribute is a derive attribute
- */
-bool is_derive (AST::Attribute &attr);
-
 /**
  * Whether or not an attribute is builtin
  */
index 81815ff22eab737adb7d6b131b10c86a44dc363e..369f77e70e69389c58b9d55241d076f2f17bfdce 100644 (file)
@@ -451,7 +451,7 @@ ASTLoweringItem::visit (AST::Function &function)
          continue;
        }
 
-      auto param = static_cast<AST::FunctionParam &> (*p);
+      auto &param = static_cast<AST::FunctionParam &> (*p);
 
       auto translated_pattern = std::unique_ptr<HIR::Pattern> (
        ASTLoweringPattern::translate (param.get_pattern ()));
index dddaa0793010ecb6fd9c1437a08929c67c38a476..8625a0e4d28c794f7164b3550ab3dad634da95b8 100644 (file)
@@ -282,9 +282,7 @@ Resolver::Resolver ()
     label_scope (Scope (mappings.get_current_crate ())),
     macro_scope (Scope (mappings.get_current_crate ())),
     global_type_node_id (UNKNOWN_NODEID), unit_ty_node_id (UNKNOWN_NODEID)
-{
-  generate_builtins ();
-}
+{}
 
 Resolver *
 Resolver::get ()
index a6d323e361444f135c0d09b996f44b88806e6478..0012969eb1215a97ee6f28edae809bcab2bae185 100644 (file)
@@ -201,6 +201,8 @@ NodeId
 Mappings::get_next_node_id ()
 {
   auto it = nodeIdIter;
+  if (UNLIKELY (it > MAX_NODEID))
+    rust_fatal_error (UNKNOWN_LOCATION, "out of node ids");
   nodeIdIter++;
   return it;
 }
index 3cc5a7506c39c71e28d2a0383061f94d7e4e9a82..bd9fd733d548b7acc7234c4890dafcbfc42c42b3 100644 (file)
@@ -63,6 +63,7 @@ struct DefId
 
 #define UNKNOWN_CRATENUM ((uint32_t) (UINT32_MAX))
 #define UNKNOWN_NODEID ((uint32_t) (UINT32_MAX))
+#define MAX_NODEID (UNKNOWN_NODEID - 1)
 #define UNKNOWN_HIRID ((uint32_t) (UINT32_MAX))
 #define UNKNOWN_LOCAL_DEFID ((uint32_t) (0))
 #define UNKNOWN_DEFID (DefId{0, 0})