2026-04-30  Release Manager

	* GCC 16.1.0 released.

2026-04-14  jayant chauhan  <0001jayant@gmail.com>

	* backend/rust-compile-item.cc (CompileItem::visit): Do not insert
	const_expr into the context if it is an error_mark_node.
	* backend/rust-compile-implitem.cc (CompileTraitItem::visit): Likewise.

2026-04-14  AhmedSaid3617  <said.ahmed3617@gmail.com>

	* ast/rust-item.h:(PathType::get_glob_type): Added const qualifier to allow
	function call from const objects.
	* resolve/rust-forever-stack.hxx:
	(ForeverStack<N>::resolve_path): Check for empty segments vector and
	return starting point.
	* resolve/rust-toplevel-name-resolver-2.0.cc (flatten_glob): Preserve the
	opening scope resolution property of the use statement.

2026-04-14  Islam-Imad  <islamimad404@gmail.com>

	* backend/rust-compile-expr.cc (CompileExpr::visit): set unit type.

2026-04-14  Mohamed Ali  <mohmedali1462005@gmail.com>

	* backend/rust-compile-intrinsic.cc: Register cttz and cttz_nonzero intrinsics.
	* backend/rust-intrinsic-handlers.cc (cttz_handler): Implemnt cttz_handler.
	(cttz_nonzero_handler): Implemnt cttz_nonzero_handler.
	* backend/rust-intrinsic-handlers.h (cttz_handler): Add decl for cttz_handler.
	(cttz_nonzero_handler): Add decl for cttz_handler.
	* util/rust-intrinsic-values.h: map cttz_nonzero to its name.

2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>

	* backend/rust-compile-asm.cc: Include "rust-ggc.h".
	(chain_asm_operand): Use GGC::ChainList.
	(CompileAsm::asm_construct_outputs): Likewise.
	(CompileAsm::asm_construct_inputs): Likewise.
	(CompileLlvmAsm::construct_operands): Likewise.
	(CompileLlvmAsm::construct_clobbers): Likewise.
	* util/rust-ggc.h (class ChainList): New class.

2026-04-14  Philipp Gesang  <phg@phi-gamma.net>

	* parse/rust-parse-impl.hxx: Refactor qualifier parsing
	* parse/rust-parse.h: (parse_function_qualifiers) Likewise

2026-04-14  Philipp Gesang  <phg@phi-gamma.net>

	* parse/rust-parse-impl.hxx (parse_function_qualifiers)
	Collect qualifiers into vector before generating the
	error message
	* parse/rust-parse.h: (parse_function_qualifiers) Make
	function fallible

2026-04-14  Kushal Pal  <kushalpal109@gmail.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit):
	Add error for functions with `default` qualifier outside of impl
	blocks.
	* parse/rust-parse-impl.hxx (Parser::parse_item):
	Allow parsing of functions with `default` qualifier.
	(Parser::parse_vis_item): Likewise.

2026-04-14  Kushal Pal  <kushalpal109@gmail.com>

	* ast/rust-ast-builder.cc (AstBuilder::fn_qualifiers):
	Add new parameter.
	* ast/rust-ast-builder.h: Likewise.
	* ast/rust-ast.cc (Function::Function):
	Remove current default parameter.
	(Function::operator=):
	Remove current default parameter.
	* ast/rust-item.h (class FunctionQualifiers):
	Add data member to represent defaultness of a function.
	(class Function):
	Remove current default parameter.
	* parse/rust-parse-impl.hxx (Parser::parse_function_qualifiers):
	Parse function qualifiers in order.
	* util/rust-common.h (enum class): Create enum to represent
	defaultness of a function.

2026-04-14  Yap Zhi Heng  <yapzhhg@gmail.com>

	* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::parse_repr_options):
	Allow parsing of AttrInputMetaItemContainer.

2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* Make-lang.in: Add a new rust-attribute-checker file.
	* checks/errors/rust-builtin-attribute-checker.h (check_valid_attribute_for_item):
	Change BuiltinAttributeChecker doc comment.
	* rust-session-manager.cc: Include the new rust-attribute-checker
	header.
	* util/rust-attributes.cc (AttributeChecker::AttributeChecker): Move to
	rust-attribute-checker.cc.
	(AttributeChecker::go): Likewise.
	(is_proc_macro_type): Likewise.
	(check_proc_macro_non_function): Likewise.
	(check_proc_macro_non_root): Likewise.
	(AttributeChecker::visit): Likewise.
	* util/rust-attributes.h (class AttributeChecker): Move to
	rust-attribute-checker.h.
	* checks/errors/rust-attribute-checker.cc: New file.
	* checks/errors/rust-attribute-checker.h: New file.

2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/rust-builtin-attribute-checker.cc (std::function<void):
	Use the new attribute value variables instead of raw values.
	* util/rust-attribute-values.h: Add deny, warn and forbid values.

2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/rust-builtin-attribute-checker.cc (check_doc_attribute):
	Move from here...
	(doc): ...to here.
	(check_deprecated_attribute): Move from here...
	(deprecated): ...to here.
	(check_link_section_attribute): Move from here...
	(link_section): ... to here.
	(check_export_name_attribute): Move from here...
	(export_name): ... to here.
	(check_no_mangle_function): Remove internal structure checking and move
	it to no_mangle handler.
	(check_lint_attribute): Move from here...
	(lint): ... to here.
	(link_name): Likewise with link_name.
	(check_crate_type): Move to anonymous namespace within the handler
	namespace.
	(proc_macro_derive): Add proc macro specific handler.
	(proc_macro): Likewise.
	(target_feature): Likewise.
	(no_mangle): Add specific handler for no_mangler attribute internal
	structure checking.
	(std::function<void): Add map with attribute name to handler matching.
	(tl::optional<std::function<void): Likewise.
	(lookup_handler): Add an helper function to retrieve the handler of any
	builtin attribute.
	(BuiltinAttributeChecker::visit): Change attribute visitor call with
	new handler call.
	* checks/errors/rust-builtin-attribute-checker.h (check_valid_attribute_for_item):
	Add prototype.

2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/rust-builtin-attribute-checker.cc (BuiltinAttributeChecker::visit):
	Deduplicate lines using the new templated function within the visitor
	functions.
	* checks/errors/rust-builtin-attribute-checker.h (class BuiltinAttributeChecker):
	Create a new templated function that achieves the default attribute
	checking operations.

2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* expand/rust-expand-visitor.cc (ExpandVisitor::visit): Flatten
	AttrInputExpr containing a literal to an AttrInputLiteral.
	* expand/rust-expand-visitor.h: Add function prototype.

2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.h: Add helper to set a new attribute input.
	* expand/rust-expand-visitor.cc (ExpandVisitor::expand_inner_stmts):
	Visit builtin attributes.
	(ExpandVisitor::visit): Likewise.
	* resolve/rust-early-name-resolver-2.0.cc (Early::visit): Expand
	attribute input expr.

2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* Make-lang.in: Add file for builtin attribute checking.
	* hir/rust-ast-lower-base.cc (ASTLoweringBase::handle_doc_item_attribute):
	Remove error emission and replace it with an assert. The error message
	will now be emitted from the builtin attribute checking pass.
	* rust-session-manager.cc (Session::compile_crate): Add builtin
	attribute checking step after expansion.
	* util/rust-attributes.cc (Attributes::is_known): Move down.
	(Attributes::extract_string_literal): Likewise.
	(Attributes::valid_outer_attribute): Add a function to retrieve outer/
	inner status for a given builtin attribute value.
	(AttributeChecker::visit): Move some checking to builtin attribute
	checker.
	(identify_builtin): Rename function from here ...
	(lookup_builtin): ... to here.
	(check_doc_alias): Move to builtin attribute checker.
	(check_doc_attribute): Likewise.
	(check_deprecated_attribute): Likewise.
	(check_valid_attribute_for_item): Likewise.
	(AttributeChecker::check_inner_attribute): Likewise.
	(check_link_section_attribute): Likewise.
	(check_export_name_attribute): Likewise.
	(check_lint_attribute): Likewise.
	(check_no_mangle_function): Likewise.
	(is_proc_macro_type): Update function call name.
	* util/rust-attributes.h (identify_builtin): Update prototype.
	(lookup_builtin): Likewise.
	* checks/errors/rust-builtin-attribute-checker.cc: New file.
	* checks/errors/rust-builtin-attribute-checker.h: New file.

2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Remove
	AttrInputMacro handling.
	* ast/rust-ast-collector.h: Remove function prototype.
	* ast/rust-ast-full-decls.h (class AttrInputMacro): Remove forward
	declaration.
	* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Remove function.
	* ast/rust-ast-visitor.h: Remove function prototypes.
	* ast/rust-ast.cc (Attribute::get_traits_to_derive): Remove handling of
	macros.
	(AttrInputMacro::as_string): Remove function.
	(AttrInputMacro::AttrInputMacro): Likewise.
	(AttrInputMacro::operator=): Likewise.
	(AttrInputMacro::accept_vis): Likewise.
	* ast/rust-ast.h: Remove MACRO kind.
	* ast/rust-expr.h (class AttrInputMacro): Add getter for expr pointer.
	Remove AttrInputMacro class.
	* expand/rust-derive.h: Remove function prototype.
	* expand/rust-expand-visitor.cc (ExpandVisitor::visit): Change function
	to AttrInputExpr.
	* expand/rust-expand-visitor.h: Update prototype.
	* hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Remove function.
	* hir/rust-ast-lower-base.h: Remove function prototype.
	* parse/rust-parse-impl-attribute.hxx: Parse the attribute content as
	AttrInputExpr instead.
	* util/rust-attributes.cc (check_doc_attribute): Remove MACRO kind
	handling.
	(check_export_name_attribute): Remove switch and only handle literals.
	(AttributeChecker::visit): Remove function.
	* util/rust-attributes.h: Remove function prototype.

2026-04-14  Egas Ribeiro  <egas.g.ribeiro@tecnico.ulisboa.pt>

	* hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): added
	refutable pattern checks for function params.

2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>

	* Make-lang.in (GRS_OBJS): Add rust-identifier-path.o.
	* resolve/rust-early-name-resolver-2.0.cc: Include
	"rust-identifier-path.h".
	(Early::go): Use IdentifierPathPass.
	(Early::visit): Handle identifier patterns which should be path
	patterns.
	* resolve/rust-early-name-resolver-2.0.h: Include
	"rust-pattern.h".
	(Early::visit): Add visiting function declaration for
	IdentifierPattern.
	(Early::ident_path_to_convert): New member variable.
	* resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit):
	Call Mappings::add_function_node.
	* util/rust-hir-map.cc (Mappings::add_function_node): New
	member function definition.
	(Mappings::is_function_node): Likewise.
	* util/rust-hir-map.h (Mappings::add_function_node): New
	member function declaration.
	(Mappings::is_function_node): Likewise.
	(Mappings::function_nodes): New member variable.
	* resolve/rust-identifier-path.cc: New file.
	* resolve/rust-identifier-path.h: New file.

2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-pointer-visitor.cc (PointerVisitor::visit): Remove
	duplicated functions.
	* ast/rust-ast-pointer-visitor.h: Remove duplicated function
	prototypes.

2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>

	* expand/rust-macro-expand.cc (MacroExpander::expand_crate):
	Remove usage of Resolver::get_macro_scope.
	* resolve/rust-name-resolver.cc (Resolver::Resolver): Handle
	removal of member variables.
	(Resolver::push_new_name_rib): Remove function definition.
	(Resolver::push_new_type_rib): Likewise.
	(Resolver::push_new_label_rib): Likewise.
	(Resolver::push_new_macro_rib): Likewise.
	(Resolver::find_name_rib): Likewise.
	(Resolver::find_type_rib): Likewise.
	(Resolver::find_macro_rib): Likewise.
	(Resolver::insert_builtin_types): Likewise.
	(Resolver::get_builtin_types): Likewise.
	(Resolver::generate_builtins): Likewise.
	(Resolver::setup_builtin): Likewise.
	(Resolver::insert_resolved_label): Likewise.
	(Resolver::lookup_resolved_label): Likewise.
	(Resolver::insert_resolved_macro): Likewise.
	(Resolver::lookup_resolved_macro): Likewise.
	(Resolver::push_closure_context): Likewise.
	(Resolver::pop_closure_context): Likewise.
	(Resolver::insert_captured_item): Likewise.
	(Resolver::decl_needs_capture): Likewise.
	(Resolver::get_captures): Likewise.
	(Resolver::insert_resolved_name): Replace function
	implementation with rust_unreachable call.
	(Resolver::lookup_resolved_name): Likewise.
	(Resolver::insert_resolved_type): Likewise.
	(Resolver::lookup_resolved_type): Likewise.
	(Resolver::insert_resolved_misc): Likewise.
	(Resolver::lookup_resolved_misc): Likewise.
	* resolve/rust-name-resolver.h (Resolver::insert_builtin_types):
	Remove member function declaration.
	(Resolver::get_builtin_types): Likewise.
	(Resolver::push_new_name_rib): Likewise.
	(Resolver::push_new_type_rib): Likewise.
	(Resolver::push_new_label_rib): Likewise.
	(Resolver::push_new_macro_rib): Likewise.
	(Resolver::find_name_rib): Likewise.
	(Resolver::find_type_rib): Likewise.
	(Resolver::find_label_rib): Likewise.
	(Resolver::find_macro_rib): Likewise.
	(Resolver::insert_resolved_label): Likewise.
	(Resolver::lookup_resolved_label): Likewise.
	(Resolver::insert_resolved_macro): Likewise.
	(Resolver::lookup_resolved_macro): Likewise.
	(Resolver::get_name_scope): Likewise.
	(Resolver::get_type_scope): Likewise.
	(Resolver::get_label_scope): Likewise.
	(Resolver::get_macro_scope): Likewise.
	(Resolver::get_global_type_node_id): Likewise.
	(Resolver::set_unit_type_node_id): Likewise.
	(Resolver::get_unit_type_node_id): Likewise.
	(Resolver::set_never_type_node_id): Likewise.
	(Resolver::get_never_type_node_id): Likewise.
	(Resolver::push_new_module_scope): Likewise.
	(Resolver::pop_module_scope): Likewise.
	(Resolver::peek_current_module_scope): Likewise.
	(Resolver::peek_crate_module_scope): Likewise.
	(Resolver::peek_parent_module_scope): Likewise.
	(Resolver::push_closure_context): Likewise.
	(Resolver::pop_closure_context): Likewise.
	(Resolver::insert_captured_item): Likewise.
	(Resolver::get_captures): Likewise.
	(Resolver::as_debug_string): Likewise.
	(Resolver::decl_needs_capture): Likewise.
	(Resolver::generate_builtins): Likewise.
	(Resolver::setup_builtin): Likewise.
	(Resolver::mappings): Remove member variable.
	(Resolver::tyctx): Likewise.
	(Resolver::builtins): Likewise.
	(Resolver::name_scope): Likewise.
	(Resolver::type_scope): Likewise.
	(Resolver::label_scope): Likewise.
	(Resolver::macro_scope): Likewise.
	(Resolver::global_type_node_id): Likewise.
	(Resolver::unit_ty_node_id): Likewise.
	(Resolver::never_ty_node_id): Likewise.
	(Resolver::name_ribs): Likewise.
	(Resolver::type_ribs): Likewise.
	(Resolver::label_ribs): Likewise.
	(Resolver::macro_ribs): Likewise.
	(Resolver::resolved_names): Likewise.
	(Resolver::resolved_types): Likewise.
	(Resolver::resolved_labels): Likewise.
	(Resolver::resolved_macros): Likewise.
	(Resolver::misc_resolved_items): Likewise.
	(Resolver::current_module_stack): Likewise.
	(Resolver::closure_context): Likewise.
	(Resolver::closures_capture_mappings): Likewise.

2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>

	* checks/errors/rust-const-checker.cc: Remove inclusion of
	"options.h".
	(ConstChecker::ConstChecker): Initialize 2.0 resolver.
	(ConstChecker::visit): Assume nr2.0 is enabled.
	* checks/errors/rust-const-checker.h: Adjust includes.
	(ConstChecker::resolver): Change type to 2.0 resolver.
	* checks/errors/rust-unsafe-checker.cc: Remove inclusion of
	"options.h".
	(UnsafeChecker::UnsafeChecker): Initialize 2.0 resolver.
	(UnsafeChecker::visit): Assume nr2.0 is enabled.
	* checks/errors/rust-unsafe-checker.h: Adjust includes.
	(UnsafeChecker::resolver): Change type to 2.0 resolver.
	* checks/lints/rust-lint-marklive.cc
	(MarkLive::visit_path_segment): Assume nr2.0 is enabled.
	(MarkLive::visit): Likewise.
	(MarkLive::find_ref_node_id): Likewise.
	* checks/lints/rust-lint-marklive.h: Include
	"rust-immutable-name-resolution-context.h".
	(MarkLive::resolver): Change type to 2.0 resolver, as a
	reference instead of a pointer.
	(MarkLive::MarkLive): Initialize 2.0 resolver.

2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>

	* expand/rust-expand-visitor.cc (ExpandVisitor::visit): Remove
	some redundant function overloads.
	* expand/rust-expand-visitor.h (ExpandVisitor::visit): Likewise.

2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-attribute-values.h: Add "no_builtins"
	attribute value.
	* util/rust-attributes.cc: Add "no_builtins" to
	the list of builtin attributes.

2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/feature/rust-feature-gate.cc (FeatureGate::visit):
	Rework visit to avoid multiple iterations. Add check for
	"compiler_builtins" attribute.
	(FeatureGate::check_no_core_attribute): Remove loop.
	* checks/errors/feature/rust-feature-gate.h: Update function prototype.
	* util/rust-attribute-values.h: Add "compiler_builtins" attribute
	value.
	* util/rust-attributes.cc: Add "compiler_builtins" to the list of
	builtin attributes.

2026-04-14  Mohamed Ali  <mohmedali1462005@gmail.com>

	* backend/rust-compile-intrinsic.cc: Register ctlz and ctlz_nonzero intrinsics.
	* backend/rust-intrinsic-handlers.cc (ctlz_handler): Implement ctlz_handler.
	(ctlz_nonzero_handler): Implement ctlz_nonzero_handler.
	* backend/rust-intrinsic-handlers.h (ctlz_handler): Add decl for ctlz_handler.
	(ctlz_nonzero_handler): Add decl for ctlz_nonzero_handler.
	* util/rust-intrinsic-values.h: map ctlz_nonzero to its name.

2026-04-14  Enes Cevik  <nsvke@proton.me>

	* lex/rust-lex.cc (Lexer::parse_non_decimal_int_literal): Use GMP
	for base conversion to support 128-bit literals. Remove existent_str
	parameter.
	(Lexer::parse_non_decimal_int_literals): Remove prefix string
	initialization and update function calls.
	* lex/rust-lex.h (Lexer::parse_non_decimal_int_literal): Update
	function signature to remove existent_str.

2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>

	* checks/errors/rust-hir-pattern-analysis.cc
	(PlaceInfo::specialize): Handle VariantType::UNIT.
	(WitnessPat::to_string): Likewise.
	(WitnessMatrix::apply_constructor): Likewise.
	* typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit):
	Conditionally create VariantType::UNIT variants.
	* typecheck/rust-hir-type-check-pattern.cc
	(TypeCheckPattern::visit): Fix typo, handle VariantType::UNIT.
	* typecheck/rust-tyty-variance-analysis.cc
	(GenericTyVisitorCtx::process_type): Handle VariantType::UNIT.
	* typecheck/rust-tyty.cc (BaseType::contains_infer): Likewise.
	(BaseType::is_concrete): Likewise.
	(VariantDef::variant_type_string): Likewise.
	(VariantDef::VariantDef): Likewise.
	* typecheck/rust-tyty.h (VariantDef::VariantType::UNIT): New
	enumerator.

2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>

	* resolve/rust-finalize-imports-2.0.cc
	(GlobbingVisitor::visit_enum_container): Conditionally insert
	into value namespace as well.
	* resolve/rust-forever-stack.hxx (ForeverStack::insert_variant):
	Add template specialization for value namespace.
	* resolve/rust-name-resolution-context.cc
	(NameResolutionContext::insert_variant): Allow insertion into
	value namespace.
	* resolve/rust-name-resolution-context.h
	(NameResolutionContext::insert_variant): Likewise.
	* resolve/rust-toplevel-name-resolver-2.0.cc
	(TopLevel::insert_enum_variant_or_error_out): Likewise.
	(TopLevel::visit): Use tweaked insert_enum_variant_or_error_out
	properly for all enum item kinds.
	* resolve/rust-toplevel-name-resolver-2.0.h
	(TopLevel::insert_enum_variant_or_error_out): Tweak function
	signature.

2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>

	* typecheck/rust-hir-type-check-pattern.cc
	(TypeCheckPattern::visit): Fix typo "constatnt".

2026-04-14  hriztam  <hritamstark05@gmail.com>

	* ast/rust-fmt.h: Explicitly instantiate FFIVec<Piece>.

2026-04-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>

	* typecheck/rust-tyty.cc (generate_tree_str): Remove opem_memstream
	and print_generic_stmt call with call to dump_generic_node.

2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>

	* resolve/rust-forever-stack.h: Include more headers.
	(class ResolutionPath): New class for representing paths.
	(ForeverStack::resolve_path): Change function signature.
	(ForeverStack::find_starting_point): Likewise.
	(ForeverStack::resolve_segments): Likewise.
	(ForeverStack::SegIterator): Change type alias.
	* resolve/rust-forever-stack.hxx (check_leading_kw_at_start):
	Change function signature.
	(ForeverStack::find_starting_point): Likewise.
	(ForeverStack::resolve_segments): Likewise.
	(ForeverStack::resolve_path): Likewise.
	* resolve/rust-name-resolution-context.h: Tweak include guard,
	include "rust-name-resolution.h".
	(NameResolutionContext::resolve_path): Use ResolutionPath and
	ResolutionBuilder.
	(class NameResolutionContext::ResolutionBuilder): New class.
	(class Usage): Move this...
	(class Definition): ...and this...
	* resolve/rust-name-resolution.h: ...to new file.
	* util/rust-unwrap-segment.h: Add include guard.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* rust-session-manager.cc (Session::compile_crate): Use additional
	cli attributes for the injection function. Move additional attribute
	injection from here...
	(Session::injection): ... to here.
	* rust-session-manager.h: Update injection fonction prototype.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.cc (Crate::inject_inner_attribute): Add member function
	to inject an inner attribute.
	* ast/rust-ast.h: Add function prototype.
	* lang.opt: Add frust-crate-attr argument to the compiler CLI.
	* rust-lang.cc: Remove unused attribute on  option handler.
	* rust-session-manager.cc (Session::handle_crate_name): Collect CLI
	additional inner attributes.
	(Session::compile_crate): Parse the additional inner attributes and
	inject them.
	* rust-session-manager.h (struct CompileOptions): Add collection of
	additional inner attributes.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-attributes.cc: Add no_std to list of builtin attributes.

2026-03-20  Enes Cevik  <nsvke@proton.me>

	* backend/rust-compile-intrinsic.cc: Add bswap_handler.
	* backend/rust-intrinsic-handlers.cc (bswap_handler): New function.
	* backend/rust-intrinsic-handlers.h (bswap_handler): New declaration.

2026-03-20  Mohamed Ali  <mohmedali1462005@gmail.com>

	* checks/errors/feature/rust-feature-gate.cc (FeatureGate::visit): Call check_no_core_attri.
	* checks/errors/feature/rust-feature-gate.h: Declare method check_no_core_attri.

2026-03-20  Harishankar  <harishankarpp7@gmail.com>

	* resolve/rust-early-name-resolver-2.0.cc (Early::finalize_rebind_import): Add ambiguity
	check before calling get_node_id() on glob import definitions.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* backend/rust-compile-intrinsic.cc: Use predefined values.
	* checks/errors/rust-unsafe-checker.cc (is_safe_intrinsic): Likewise.
	* util/rust-intrinsic-values.h: New file.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* Make-lang.in: Add rust-intrinsic-handlers.cc.
	* backend/rust-compile-intrinsic.cc (get_identifier): Move function
	to handlers namespace.
	(is_basic_integer_type): Likewise.
	(check_for_basic_integer_type): Likewise.
	(offset_handler): Likewise.
	(sizeof_handler): Likewise.
	(transmute_handler): Likewise.
	(rotate_handler): Likewise.
	(wrapping_op_handler_inner): Likewise.
	(op_with_overflow_inner): Likewise.
	(uninit_handler): Likewise.
	(move_val_init_handler): Likewise.
	(assume_handler): Likewise.
	(discriminant_value_handler): Likewise.
	(variant_count_handler): Likewise.
	(enum class): Likewise.
	(prefetch_data_handler): Likewise.
	(rotate_left_handler): Likewise.
	(rotate_right_handler): Likewise.
	(std::function<tree): Likewise.
	(wrapping_op_handler): Likewise.
	(op_with_overflow): Likewise.
	(prefetch_read_data): Likewise.
	(prefetch_write_data): Likewise.
	(atomic_store_handler_inner): Likewise.
	(atomic_load_handler_inner): Likewise.
	(atomic_store_handler): Likewise.
	(atomic_load_handler): Likewise.
	(unchecked_op_inner): Likewise.
	(unchecked_op_handler): Likewise.
	(copy_handler_inner): Likewise.
	(copy_handler): Likewise.
	(expect_handler_inner): Likewise.
	(expect_handler): Likewise.
	(try_handler_inner): Likewise.
	(try_handler): Likewise.
	(sorry_handler): Likewise.
	(check_for_cached_intrinsic): Likewise.
	(maybe_override_ctx): Likewise.
	(compile_fn_params): Likewise.
	(compile_intrinsic_function): Likewise.
	(enter_intrinsic_block): Likewise.
	(finalize_intrinsic_block): Likewise.
	(make_unsigned_long_tree): Likewise.
	(build_atomic_builtin_name): Likewise.
	* backend/rust-intrinsic-handlers.cc: New file.
	* backend/rust-intrinsic-handlers.h: New file.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.hxx: Remove additional error message.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/lints/rust-lint-scan-deadcode.h: Add additional condition
	to prevent warning emission. Check for underscore prefix.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-error.h (struct EnumVariant): Add error for enum
	variant.
	* parse/rust-parse-impl.hxx: Use new error type instead of nullptr.
	* parse/rust-parse.h: Update function prototype.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/lints/rust-lint-unused-var.cc (starts_with_underscore): Add
	function to detect underscore within symbol name.
	(check_decl): Call new function for underscore checking.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* resolve/rust-toplevel-name-resolver-2.0.cc(TopLevel::visit): Insert
	constant item only if now wildcard.

2026-03-20  Owen Avery  <powerboat9.gamer@gmail.com>

	* resolve/rust-default-resolver.cc (DefaultResolver::visit):
	Override MatchCase visiting function.
	* resolve/rust-default-resolver.h (DefaultResolver::visit):
	Likewise.

2026-03-20  jayant chauhan  <0001jayant@gmail.com>

	* expand/rust-derive.cc (DeriveVisitor::derive): Handle
	`BuiltinMacro::RustcEncodable` and `BuiltinMacro::RustcDecodable`.

2026-03-20  vibhatsu  <maulikbarot2915@gmail.com>

	* ast/rust-macro.h: add initialization for ExternalItem base
	class in full construtor and use node id inside ExternalItem
	to populate memeber node id.

2026-03-20  vibhatsu  <maulikbarot2915@gmail.com>

	* ast/rust-macro.h: remove get_macro_node_id and propagate
	MacroInvocation's node id through get_node_id for consistency
	* util/rust-hir-map.cc (Mappings::insert_macro_invocation): replace
	all get_macro_node_id calls with get_node_id calls
	(Mappings::lookup_macro_invocation): likewise
	(Mappings::insert_bang_proc_macro_invocation): likewise
	(Mappings::lookup_bang_proc_macro_invocation): likewise

2026-03-20  Jayant Chauhan  <0001jayant@gmail.com>

	* ast/rust-path.h (GenericArgsBinding::reconstruct): New method.
	(GenericArg::reconstruct): New method.
	(GenericArgs::reconstruct): New method.
	(PathExprSegment::reconstruct): New method.
	(PathInExpression::reconstruct): New method.
	(TypePathSegmentGeneric::reconstruct_impl): New method.
	(TypePathFunction::reconstruct): New method.
	(TypePathSegmentFunction::reconstruct_impl): New method.
	(QualifiedPathType::reconstruct): New method.
	(QualifiedPathInExpression::reconstruct): New method.
	(QualifiedPathInType::reconstruct_impl): New method.
	* expand/rust-derive-cmp-common.cc (EnumMatchBuilder::tuple): Use path.reconstruct().
	(EnumMatchBuilder::strukt): Use path.reconstruct().

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* rust-session-manager.cc (Session::compile_crate): Inject std crate
	when both no_std and no_core attributes are missing.
	* util/rust-attribute-values.h: Add no_std attribute value.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* resolve/rust-early-name-resolver-2.0.cc (Early::visit_derive_attribute):
	Change from attribute locus to trait locus.
	(Early::visit_attributes): Remove function.
	(Early::visit): Remove functions.
	* resolve/rust-early-name-resolver-2.0.h: Remove unused prototypes.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.cc (MetaItemPathExpr::to_attribute): Remove cast to
	literal.
	(AttrInputMetaItemContainer::separate_cfg_attrs): Remove PathExpr
	specific code.
	* expand/rust-cfg-strip.cc (expand_cfg_attrs): Remove the whole
	attribute if condition's result is false.
	* util/rust-attributes.cc (AttributeChecker::visit): Remove specific
	code section for meta item container. Do not check input if
	configuration does not match condition.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Add visitor
	implementation.
	* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Likewise.
	* ast/rust-ast-collector.h: Add function prototype.
	* ast/rust-ast-visitor.h: Likewise.
	* expand/rust-derive.h: Likewise.
	* hir/rust-ast-lower-base.h: Likewise.
	* ast/rust-ast.cc (Attribute::get_traits_to_derive): Handle EXPR
	variant.
	(AttrInputExpr::AttrInputExpr): Add constructor.
	(AttrInputExpr::operator=): Add assignment operator implementation.
	(AttrInputExpr::as_string): Add a string conversion member function.
	(AttrInputExpr::accept_vis): Add visitor function.
	* ast/rust-ast.h: Add EXPR type variant to AttrInput.
	* util/rust-attributes.cc (check_doc_attribute): Handle expr variant.
	* ast/rust-expr.h (class AttrInputExpr): Add class definition with
	member function prototypes.
	* hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Add empty
	visitor implementation.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-dump.cc (debug): Add debug function which calls debug
	on every crate field.
	* ast/rust-ast-dump.h (debug): Add function prototype.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-attributes.cc (AttributeChecker::visit): Rename function
	and make call to ast default visitor.
	(AttributeChecker::check_attribute): Remove function.
	* util/rust-attributes.h: Add function prototype.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.h (class Attribute): Make visitable parent class public.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.h (class Attribute): Add a node id member.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-full-decls.h (struct Attribute): Change from here...
	(class Attribute): ...to a class here.
	* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Add a default
	visit function for the attributes.
	* ast/rust-ast-visitor.h: Add a proper visit function declaration for
	attributes.
	* ast/rust-ast.cc (Attribute::accept_vis): Add a function to accept a
	visitor within the attributes.
	* ast/rust-ast.h (struct Attribute): Add the accept_vis function
	prototype.
	(class Attribute): Rename from struct to class.
	* expand/rust-derive.h: Add an empty implementation for visits to
	prevent the visitor from recursing into the attributes.
	* hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Add missing
	implementation for attribute visit function. Add a check for derive
	attributes that would have slipped through the passes.
	* hir/rust-ast-lower-base.h: Add function prototype.
	* resolve/rust-early-name-resolver-2.0.cc (Early::visit_attributes):
	Split the function into two halves.
	(Early::visit_derive_attribute): Specialized function from
	visit_attribute for derive attributes.
	(Early::visit_non_builtin_attribute): Likewise for non builtin
	attributes.
	(Early::visit): Rename visit_attributes to visit.
	* resolve/rust-early-name-resolver-2.0.h (class Early): Update function
	prototypes.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-attributes.cc: Add "feature", "no_core", "doc",
	"crate_name", "crate_type" and "may_dandle" to the list of builtin
	attributes.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* rust-session-manager.cc (Session::handle_crate_name): Use the new
	constexpr instead of a raw string value.
	* util/rust-attribute-values.h: Add crate_name and crate_type values.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* Make-lang.in: Add new specific feature store file.
	* checks/errors/feature/rust-feature-gate.cc (EarlyFeatureGateStore::get):
	Move from here to rust-feature-store.cc.
	(EarlyFeatureGateStore::add): Likewise.
	(EarlyFeatureGateStore::get_error): Likewise.
	(FeatureGate::check): Likewise.
	* checks/errors/feature/rust-feature-gate.h (class EarlyFeatureGateStore):
	Move class declaration to rust-feature-store.h header.
	* parse/rust-parse.h: Change included header.
	* checks/errors/feature/rust-feature-store.cc: New file.
	* checks/errors/feature/rust-feature-store.h: New file.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/feature/rust-feature-gate.cc (EarlyFeatureGateStore::get):
	Add function to retrieve singleton instance.
	(EarlyFeatureGateStore::add): New function to add an error and the
	corresponding feature in the store.
	(EarlyFeatureGateStore::get_error): Add new function to retrieve the
	oldest error.
	(FeatureGate::check): Update the function to retrieve the errors from
	the store instead of getting it from the parameters.
	* checks/errors/feature/rust-feature-gate.h (class EarlyFeatureGateStore):
	Add a new class to collect all early feature gating errors.
	* parse/rust-parse.h: Use store instead of keeping the errors within
	the parser instance.
	* rust-session-manager.cc (Session::compile_crate): Remove old early
	error collection from the main parser.
	* rust-system.h: Include queue header.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/feature/rust-feature-gate.cc (FeatureGate::check):
	Check all parse time errors.
	* checks/errors/feature/rust-feature-gate.h: Update function prototype
	with parse time errors.
	* parse/rust-parse-impl-attribute.hxx: Collect potential gating error
	with non literal attribute values. Remove error emission.
	* parse/rust-parse.h: Add a function to gather potential feature gating
	errors as well as a getter for collected errors.
	* rust-session-manager.cc (Session::compile_crate): Retrieve potential
	feature gating errors and check them later during the feature gating
	step.
	* util/rust-attributes.cc (check_export_name_attribute): Change
	attribute checking error emission to prevent errors with macro inputs.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/feature/contrib/fetch: Bump version from 1.49.0 to
	1.50.0. Change brace expansion to explicit file fetch.
	* checks/errors/feature/rust-feature-defs.h: Regenerate.
	* checks/errors/feature/contrib/copyright-stub.h: Add rfl include
	directive.
	* checks/errors/feature/rust-feature-defs-rfl.h: New file.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* Make-lang.in: Add rust-early-cfg-strip object file.
	* expand/rust-cfg-strip.h (expand_cfg_attrs): Declare function prototype.
	* rust-session-manager.cc (Session::compile_crate): Reorder feature
	collection and add early cfg strip.
	* expand/rust-early-cfg-strip.cc: New file.
	* expand/rust-early-cfg-strip.h: New file.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* expand/rust-cfg-strip.cc (CfgStrip::fails_cfg): Remove function.
	* expand/rust-cfg-strip.h: Remove function prototype.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* Make-lang.in: Add new feature collector file.
	* checks/errors/feature/rust-feature-gate.cc (FeatureGate::visit):
	Remove feature collection from gating visitor.
	(FeatureGate::gate): Use features from the crate feature entity instead
	of old class members.
	* checks/errors/feature/rust-feature-gate.h: Get features from a
	separate CrateFeatures struct instead of keeping them in the class.
	* rust-session-manager.cc (Session::compile_crate): Collect features
	before gating them.
	* util/rust-attribute-values.h: Add feature attribute value.
	* checks/errors/feature/rust-feature-collector.cc: New file.
	* checks/errors/feature/rust-feature-collector.h: New file.

2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-attributes.cc (is_builtin): Rename from here ...
	(identify_builtin): ... to here.
	(is_proc_macro_type): Handle new return value.
	(AttributeChecker::check_inner_attribute): Likewise.
	(AttributeChecker::check_attribute): Likewise.
	(AttributeChecker::visit): Likewise.
	* util/rust-attributes.h (identify_builtin): Update function prototype.

2026-03-20  jayant chauhan  <0001jayant@gmail.com>

	* ast/rust-ast.cc (Attribute::get_traits_to_derive): Propagate location
	info from MetaWord to SimplePath.

2026-03-20  Owen Avery  <powerboat9.gamer@gmail.com>

	* ast/rust-ast.h: Include "rust-cloneable.h".
	(struct CloneableDelegate<std::unique_ptr<AST::Pattern>>): Add
	specialization.
	* ast/rust-pattern.cc (IdentifierPattern::as_string): Handle
	field type changes.
	(RangePattern::as_string): Likewise.
	(ReferencePattern::as_string): Likewise.
	(StructPatternFieldTuplePat::as_string): Likewise.
	(StructPatternFieldIdentPat::as_string): Likewise.
	(StructPatternElements::as_string): Likewise.
	(TupleStructItemsNoRest::as_string): Likewise.
	(TupleStructItemsHasRest::as_string): Likewise.
	(TupleStructPattern::as_string): Likewise.
	(TuplePatternItemsNoRest::as_string): Likewise.
	(TuplePatternItemsHasRest::as_string): Likewise.
	(TuplePattern::as_string): Likewise.
	(SlicePatternItemsNoRest::as_string): Likewise.
	(SlicePatternItemsHasRest::as_string): Likewise.
	(SlicePattern::as_string): Likewise.
	(AltPattern::as_string): Likewise.
	* ast/rust-pattern.h: Include "rust-cloneable.h".
	(class IdentifierPattern): Use Cloneable to simplify copying.
	(class RangePattern): Likewise.
	(class ReferencePattern): Likewise.
	(class StructPatternFieldTuplePat): Likewise.
	(class StructPatternFieldIdentPat): Likewise.
	(class StructPatternElements): Likewise.
	(class TupleStructItemsNoRest): Likewise.
	(class TupleStructItemsHasRest): Likewise.
	(class TupleStructPattern): Likewise.
	(class TuplePatternItemsNoRest): Likewise.
	(class TuplePatternItemsHasRest): Likewise.
	(class TuplePattern): Likewise.
	(class GroupedPattern): Likewise.
	(class SlicePatternItemsNoRest): Likewise.
	(class SlicePatternItemsHasRest): Likewise.
	(class SlicePattern): Likewise.
	(class AltPattern): Likewise.
	(struct
	CloneableDelegate<std::unique_ptr<AST::RangePatternBound>>): Add
	specialization.
	(struct
	CloneableDelegate<std::unique_ptr<AST::TupleStructItems>>):
	Likewise.
	(struct
	CloneableDelegate<std::unique_ptr<AST::TuplePatternItems>>):
	Likewise.
	(struct
	CloneableDelegate<std::unique_ptr<AST::SlicePatternItems>>):
	Likewise.
	(struct
	CloneableDelegate<std::unique_ptr<AST::StructPatternField>>):
	Likewise.
	* util/rust-cloneable.h: New file.

2026-02-27  Islam-Imad  <islamimad404@gmail.com>

	* typecheck/rust-hir-type-check-struct.cc: enhance missing fields error message

2026-02-27  Owen Avery  <powerboat9.gamer@gmail.com>

	* ast/rust-ast.h (struct Crate): Make final.

2026-02-27  Owen Avery  <powerboat9.gamer@gmail.com>

	* Make-lang.in (GRS_OBJS): Remove entries.
	* ast/rust-ast.cc (DelimTokenTree::parse_to_meta_item): Handle
	changes to AttributeParser.
	(AttributeParser::AttributeParser): Change signature.
	* ast/rust-macro.h (AttributeParser::AttributeParser): Likewise.
	* expand/rust-macro-expand.cc
	(MacroExpander::expand_eager_invocations): Handle changes to
	MacroInvocLexer.
	(MacroExpander::parse_proc_macro_output): Use MacroInvocLexer
	instead of ProcMacroInvocLexer.
	* expand/rust-macro-expand.h: Remove inclusion of
	"rust-proc-macro-invoc-lexer.h".
	* expand/rust-macro-invoc-lexer.cc
	(MacroInvocLexer::peek_token): Handle changes to MacroInvocLexer
	internal representation.
	(MacroInvocLexer::get_token_slice): Likewise.
	(MacroInvocLexer::split_current_token): Likewise and fix
	iterator handling.
	* expand/rust-macro-invoc-lexer.h (class MacroInvocLexerBase):
	Remove and combine with...
	(class MacroInvocLexer): ...its now only derived class.
	* expand/rust-proc-macro-invoc-lexer.cc: Removed.
	* expand/rust-proc-macro-invoc-lexer.h: Removed.
	* parse/rust-parse-impl-proc-macro.cc: Removed.

2026-02-27  Harishankar  <harishankarpp7@gmail.com>

	* parse/rust-parse-impl-expr.hxx (null_denotation_path):
	Check for null struct and tuple expressions to prevent segmentation fault.

2026-02-27  Harishankar  <harishankarpp7@gmail.com>

	* parse/rust-parse-impl-expr.hxx (parse_arithmetic_or_logical_expr):
	Check for null left operand to prevent segmentation fault.

2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>

	* ast/rust-ast-builder.h (Builder::qualified_call): New method declaration.
	* ast/rust-ast-builder.cc (Builder::qualified_call): Implement new method.
	* expand/rust-derive-clone.cc (DeriveClone::clone_call): Use builder.qualified_call.

2026-02-27  jayant chauhan  <0001jayant@gmail.com>

	* parse/rust-parse-impl-expr.hxx (null_denotation_path): Check
	if macro invocation returns null and return error.

