From: Owen Avery Date: Sun, 14 Dec 2025 21:37:31 +0000 (-0500) Subject: gccrs: Make some general improvements X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0780ff1fc5fe9e71e5510fc60bb845c58ab36880;p=thirdparty%2Fgcc.git gccrs: Make some general improvements 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 --- diff --git a/gcc/rust/ast/rust-ast-visitor.cc b/gcc/rust/ast/rust-ast-visitor.cc index afdd2b19dac..a9e2f053a01 100644 --- a/gcc/rust/ast/rust-ast-visitor.cc +++ b/gcc/rust/ast/rust-ast-visitor.cc @@ -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); } diff --git a/gcc/rust/expand/rust-expand-visitor.h b/gcc/rust/expand/rust-expand-visitor.h index b79eb663c6c..0f92268eefe 100644 --- a/gcc/rust/expand/rust-expand-visitor.h +++ b/gcc/rust/expand/rust-expand-visitor.h @@ -27,11 +27,6 @@ namespace Rust { -/** - * Whether or not an attribute is a derive attribute - */ -bool is_derive (AST::Attribute &attr); - /** * Whether or not an attribute is builtin */ diff --git a/gcc/rust/hir/rust-ast-lower-item.cc b/gcc/rust/hir/rust-ast-lower-item.cc index 81815ff22ea..369f77e70e6 100644 --- a/gcc/rust/hir/rust-ast-lower-item.cc +++ b/gcc/rust/hir/rust-ast-lower-item.cc @@ -451,7 +451,7 @@ ASTLoweringItem::visit (AST::Function &function) continue; } - auto param = static_cast (*p); + auto ¶m = static_cast (*p); auto translated_pattern = std::unique_ptr ( ASTLoweringPattern::translate (param.get_pattern ())); diff --git a/gcc/rust/resolve/rust-name-resolver.cc b/gcc/rust/resolve/rust-name-resolver.cc index dddaa079301..8625a0e4d28 100644 --- a/gcc/rust/resolve/rust-name-resolver.cc +++ b/gcc/rust/resolve/rust-name-resolver.cc @@ -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 () diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc index a6d323e3614..0012969eb12 100644 --- a/gcc/rust/util/rust-hir-map.cc +++ b/gcc/rust/util/rust-hir-map.cc @@ -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; } diff --git a/gcc/rust/util/rust-mapping-common.h b/gcc/rust/util/rust-mapping-common.h index 3cc5a7506c3..bd9fd733d54 100644 --- a/gcc/rust/util/rust-mapping-common.h +++ b/gcc/rust/util/rust-mapping-common.h @@ -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})