]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Daily bump.
authorGCC Administrator <gccadmin@gcc.gnu.org>
Wed, 17 Jan 2024 00:21:29 +0000 (00:21 +0000)
committerGCC Administrator <gccadmin@gcc.gnu.org>
Wed, 17 Jan 2024 00:21:29 +0000 (00:21 +0000)
ChangeLog
gcc/ChangeLog
gcc/DATESTAMP
gcc/c-family/ChangeLog
gcc/cp/ChangeLog
gcc/rust/ChangeLog
gcc/testsuite/ChangeLog
libgrust/ChangeLog

index 644bea96c4cd8f4172244bee7c3edf2a5a606aa6..9845720a24f47b71c2d8953f907e821dce1dc8cc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Makefile.def: Add a dependency to libgrust for all-gcc.
+       * Makefile.in: Regenerate the file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Makefile.def: Add libgrust target to bootstrap.
+       * Makefile.in: Regenerate.
+
 2024-01-15  Andrew Pinski  <quic_apinski@quicinc.com>
 
        * MAINTAINERS (DCO): Add myself.
index 9fd99c034d9810d569c104d1c160d95aefd2700b..01c8b0192981f528ddac7d89e1041545ca0f37c9 100644 (file)
@@ -1,3 +1,72 @@
+2024-01-16  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+
+       * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add 'cobalt-100' CPU.
+       * config/aarch64/aarch64-tune.md: Regenerated.
+       * doc/invoke.texi (-mcpu): Add cobalt-100 core.
+
+2024-01-16  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+
+       PR target/112573
+       * config/aarch64/aarch64.cc (aarch64_legitimize_address): Reassociate
+       badly formed CONST expressions.
+
+2024-01-16  Daniel Cederman  <cederman@gaisler.com>
+
+       * config/sparc/sparc.cc (next_active_non_empty_insn): Length 0 treated as empty
+
+2024-01-16  Daniel Cederman  <cederman@gaisler.com>
+
+       * config/sparc/sparc.cc (atomic_insn_for_leon3_p): Treat membar_storeload as atomic
+       * config/sparc/sync.md (membar_storeload): Turn into named insn
+       and add GR712RC errata workaround.
+       (membar_v8): Add GR712RC errata workaround.
+
+2024-01-16  Andreas Larsson  <andreas@gaisler.com>
+
+       * config/sparc/sync.md (*membar_storeload_leon3): Remove
+       (*membar_storeload): Enable for LEON
+
+2024-01-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/113372
+       PR middle-end/90348
+       PR middle-end/110115
+       PR middle-end/111422
+       * cfgexpand.cc (add_scope_conflicts_2): New function.
+       (add_scope_conflicts_1): Use it.
+
+2024-01-16  Georg-Johann Lay  <avr@gjlay.de>
+
+       * config/avr/avr-mcus.def (avr16eb14, avr16eb20, avr16eb28, avr16eb32)
+       (avr16ea28, avr16ea32, avr16ea48, avr32ea28, avr32ea32, avr32ea48): Add.
+       * doc/avr-mmcu.texi: Regenerate.
+
+2024-01-16  Feng Xue  <fxue@os.amperecomputing.com>
+
+       PR tree-optimization/113091
+       * tree-vect-slp.cc (vect_slp_has_scalar_use): New function.
+       (vect_bb_slp_mark_live_stmts): New parameter scalar_use_map, check
+       scalar use with new function.
+       (vect_bb_slp_mark_live_stmts): New function as entry to existing
+       overriden functions with same name.
+       (vect_slp_analyze_operations): Call new entry function to mark
+       live statements.
+
+2024-01-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
+
+       PR target/113404
+       * config/riscv/riscv.cc (riscv_override_options_internal): Report sorry
+       for RVV in big-endian mode.
+
+2024-01-16  Yanzhang Wang  <yanzhang.wang@intel.com>
+
+       * config/riscv/riscv.cc (riscv_arg_has_vector): Delete.
+       (riscv_pass_in_vector_p): Delete.
+       (riscv_init_cumulative_args): Delete the checking.
+       (riscv_get_arg_info): Delete the checking.
+       (riscv_function_value): Delete the checking.
+       * config/riscv/riscv.h: Delete the member for checking.
+
 2024-01-15  Georg-Johann Lay  <avr@gjlay.de>
 
        * doc/invoke.texi (AVR Options) [-mskip-bug]: Add documentation.
index 9952a5e3bfc4edc74e3bdd1e13fef6d229220fc0..6e69a00502cf90449736d07af6d7b8d67b251350 100644 (file)
@@ -1 +1 @@
-20240116
+20240117
index 47019bd346bef4b9087ce9abbb29986c7fca82c7..6038d47f9e93c427e853af4eef275842b151b530 100644 (file)
@@ -1,3 +1,9 @@
+2024-01-16  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR ada/113397
+       * c-ada-spec.cc (check_type_name_conflict): Add guard for the
+       presence of DECL_NAME on a TYPE_DECL.
+
 2024-01-11  Julian Brown  <julian@codesourcery.com>
 
        * c-pretty-print.cc (c_pretty_printer::postfix_expression,
index 49e93ecc0c43367d80c1d5200a0cbcbf2c193168..9daad1ffb000be2f486f4684604562aba08387e2 100644 (file)
@@ -1,3 +1,40 @@
+2024-01-16  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+       PR c++/113292
+       * decl2.cc (get_tls_wrapper_fn): Set DECL_CONTEXT.
+       (c_parse_final_cleanups): Suppress warning for no definition of
+       TLS wrapper functions in header modules.
+       * module.cc (trees_out::lang_decl_vals): Write wrapped variable
+       for TLS wrapper functions.
+       (trees_in::lang_decl_vals): Read it.
+       (trees_out::decl_value): Write TLS model for thread-local vars.
+       (trees_in::decl_value): Read it for new decls. Remember to emit
+       definitions of TLS wrapper functions later.
+
+2024-01-16  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+       * name-lookup.h (enum scope_kind): Add 'sk_count'.
+       * name-lookup.cc (cp_binding_level_descriptor): Add missing
+       scope kinds. Add assertion that the list is up to date. Fix
+       handling of explicit_spec_p.
+
+2024-01-16  Marek Polacek  <polacek@redhat.com>
+
+       * decl.cc (grokdeclarator) <case cdk_function>: Tweak diagnostic
+       messages.
+
+2024-01-16  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/113340
+       * decl.cc (grokdeclarator) <case cdk_function>: Clear
+       is_xobj_member_function in case of an error.
+
+2024-01-16  waffl3x  <waffl3x@protonmail.com>
+
+       PR c++/113307
+       * parser.cc (cp_parser_parameter_declaration): Reject packs
+       on xobj params.
+
 2024-01-15  Marek Polacek  <polacek@redhat.com>
 
        PR c++/110065
index 65a4b1c410384cd3aedee94e55bc11849bbe9525..c093556817ccfb65e82fb621d2f6404619e219d8 100644 (file)
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/tree/rust-hir-pattern.h
+       (TupleStructItems::ItemType::RANGE): Rename to...
+       (TupleStructItems::ItemType::RANGED): ...here.
+       (TupleStructItems::ItemType::NO_RANGE): Rename to...
+       (TupleStructItems::ItemType::MULTIPLE): ...here.
+       (TuplePatternItems::TuplePatternItemType): Rename to...
+       (TuplePatternItems::ItemType): ...here.
+       : Handle renames.
+       * backend/rust-compile-pattern.cc: Likewise.
+       * typecheck/rust-hir-type-check-pattern.cc: Likewise.
+       * checks/errors/borrowck/rust-bir-builder-pattern.h: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lex/rust-lex.cc (Lexer::parse_decimal_int_or_float): Remove
+       additional zero after empty floating point.
+       * parse/rust-parse-impl.h (Parser::left_denotation): Handle float with
+       empty floating point.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * backend/rust-compile-expr.cc (CompileExpr::generate_closure_function):
+       Fix reference to node.
+       * backend/rust-mangle.cc (struct V0Path): Modified to accept closures.
+       (v0_crate_path): Modified to accept closures.
+       (v0_closure): New function to mangle closures.
+       (v0_path): Modified to accept closures
+       * util/rust-mapping-common.h (UNKNOWN_NODEID): Change to UINT32_MAX.
+       (UNKNOWN_HIRID): Change to UINT32_MAX.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Move from here...
+       * ast/rust-ast-visitor.h: ... to here.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Move to header
+       file.
+       (TokenCollector::visit_items_joined_by_separator): Likewise.
+       (TokenCollector::visit_as_line): Likewise.
+       (TokenCollector::visit_items_as_lines): Likewise.
+       (TokenCollector::visit_items_as_block): Likewise.
+       * ast/rust-ast-collector.h: Add implementation.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Add visitor for
+       VariadicParam and remove Self parameter visitor from Function visit.
+       * expand/rust-cfg-strip.cc (CfgStrip::maybe_strip_self_param): Remove
+       function.
+       (CfgStrip::maybe_strip_trait_method_decl): Remove self parameter visit.
+       (CfgStrip::maybe_strip_function_params): Handle new function
+       parameters.
+       (CfgStrip::visit): Handle VariadicParam, SelfParam and FunctionParam.
+       * expand/rust-expand-visitor.cc (ExpandVisitor::expand_self_param):
+       Remove function.
+       (ExpandVisitor::expand_trait_method_decl): Do not visit self parameter.
+       (ExpandVisitor::visit): Add visit for VariadicParam, FunctionParam and
+       SelfParam.
+       (ExpandVisitor::expand_function_params): Visit parameters instead.
+       * expand/rust-expand-visitor.h: Update function prototypes.
+       * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): Update visit
+       with new parameters.
+       (ResolveTraitItems::visit): Likewise.
+       * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
+       Update visit functions with the new visitor functions for VariadicParam
+       SelfParam and FunctionParam.
+       * resolve/rust-early-name-resolver.h: Update function prototypes.
+       * ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Update visitor
+       according to the new function parameter structures.
+       * ast/rust-ast-visitor.h: Update prototypes and add visitor virtual
+       functions for SelfParam, FunctionParam and VariadicParam.
+       * ast/rust-ast.cc (Function::Function): Move constructor in
+       implementation instead of header.
+       (Function::operator=): Likewise.
+       (Function::as_string): Update function with pointer dereference.
+       (VariadicParam::as_string): Likewise.
+       (TraitFunctionDecl::as_string): Likewise.
+       (TraitMethodDecl::as_string): Likewise.
+       (FunctionParam::accept_vis): Add function for visitor.
+       (SelfParam::accept_vis): Likewise.
+       (VariadicParam::accept_vis): Likewise.
+       (TraitItemFunc::TraitItemFunc): Move constructor to implementation
+       file.
+       (TraitItemFunc::operator=): Likewise.
+       (TraitItemMethod::TraitItemMethod): Likewise.
+       (TraitItemMethod::operator=): Likewise.
+       * ast/rust-item.h (class Function): Remove self optional member.
+       (class TraitMethodDecl): Likewise.
+       (class TraitFunctionDecl): Likewise.
+       (class Param): Add abstract parameter class.
+       (class SelfParam): Inherit from Param and remove parameter common
+       members.
+       (class FunctionParam): Likewise.
+       (class VariadicParam): Likewise.
+       (struct Visibility): Move structure declaration.
+       (class VisItem):  Likewise.
+       * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add
+       a self parameter check during AST validation.
+       * checks/errors/rust-ast-validation.h: Add function prototype.
+       * expand/rust-derive-clone.cc (DeriveClone::clone_fn): Update function
+       constructor.
+       * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_self): Rework
+       function for the new parameters.
+       (ASTLoweringBase::visit): Add visit functions for VariadicParam,
+       FunctionParam and SelfParam.
+       * hir/rust-ast-lower-base.h: Update function prototypes.
+       * parse/rust-parse-impl.h (Parser::parse_function): Update function
+       according to new function representation.
+       (Parser::parse_function_param): Return vector of abstract param instead
+       of FunctionParam.
+       (Parser::parse_method): Update according to new representation.
+       (Parser::parse_trait_item): Likewise.
+       (Parser::parse_self_param): Error out with
+       self pointers and prevent the lexer from eating regular function
+       parameters. Update return type.
+       * parse/rust-parse.h: Update function return types.
+       * ast/rust-ast-collector.h: Add VariadicParam visit prototype.
+       * ast/rust-ast.h (struct Visibility): Move struct declaration.
+       (class VisItem): Likewise.
+       * ast/rust-expr.h: Update included files.
+       * checks/errors/rust-feature-gate.h: Add visitor functions for
+       SelfParam, FunctionParam and VariadicParam.
+       * expand/rust-cfg-strip.h: Update function prototypes.
+       * expand/rust-derive.h: Likewise.
+       * hir/rust-ast-lower-implitem.h: Handle special arguments.
+       * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Likewise.
+       * metadata/rust-export-metadata.cc (ExportContext::emit_function):
+       Likewise.
+       * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Add visitor
+       functions.
+       * resolve/rust-ast-resolve-base.h: Update prototypes.
+       * resolve/rust-ast-resolve-stmt.h: Handle new parameter kind.
+       * resolve/rust-default-resolver.cc (DefaultResolver::visit): Likewise.
+       * resolve/rust-default-resolver.h: Update prototype.
+       * util/rust-attributes.cc (AttributeChecker::visit): Add visitor
+       functions for SelfParam and VariadicParam.
+       * util/rust-attributes.h: Add visit prototypes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add
+       check for additional named argument as well as variadic argument's
+       position.
+       * checks/errors/rust-ast-validation.h: Add visit function prototype for
+       external functions.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-visitor.cc (ContextualASTVisitor::visit): Push the new
+       trait context when visiting a trait.
+       * ast/rust-ast-visitor.h: Add visit function prototype and TRAIT
+       context.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Change
+       reported error location to the lifetime location.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Check if there is
+       a label before visit.
+       * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Emit an
+       error when a label has a forbidden name.
+       * checks/errors/rust-ast-validation.h: Add function prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-expr.h (class BreakExpr): Change Lifetime to LoopLabel.
+       * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Lower lifetime
+       inside the label instead.
+       * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Resolve the
+       inner lifetime.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lex/rust-lex.cc (Lexer::parse_raw_identifier): Use const value.
+       * parse/rust-parse-impl.h (Parser::parse_simple_path_segment):
+       Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lex/rust-lex.cc (RS_TOKEN): Remove local map.
+       (RS_TOKEN_KEYWORD): Likewise.
+       (Lexer::classify_keyword): Change call to utils.
+       * util/rust-keyword-values.cc (get_keywords): Add init function.
+       (RS_TOKEN_KEYWORD): Call to X macro.
+       * util/rust-keyword-values.h: Change from set to a map.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * checks/errors/rust-ast-validation.cc (RS_TOKEN): Remove locale set.
+       (RS_TOKEN_KEYWORD): Likewise.
+       (ASTValidation::visit): Change keyword set call to the one from utils.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Make-lang.in: Add rust-keyword-values.cc to the list.
+       * util/rust-keyword-values.cc: New file.
+       * util/rust-keyword-values.h: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-attribute-values.h (RUST_ATTRIBUTES_VALUE_H): Remove old
+       header guard.
+       (RUST_ATTRIBUTE_VALUES_H): Add new one.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * checks/errors/rust-ast-validation.cc (RS_TOKEN): Add keyword set.
+       (RS_TOKEN_KEYWORD): Likewise.
+       (ASTValidation::visit): Add validation on lifetime visit.
+       * checks/errors/rust-ast-validation.h: Add function prototype.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-item.h
+       (class Method): Remove.
+       (Function::self_param): New.
+       (Function::has_self_param): New.
+       (Function::Function): Initialize self_param.
+       (Function::operator=): Likewise.
+       (Function::get_self_param): New.
+       * ast/rust-ast.cc
+       (Method::as_string): Remove.
+       (Method::accept_vis): Remove.
+       * ast/rust-ast-collector.cc
+       (TokenCollector::visit):
+       Remove AST::Method visitor, handle self_param in AST::Function visitor.
+       * ast/rust-ast-collector.h
+       (TokenCollector::visit): Remove AST::Method visitor.
+       * ast/rust-ast-full-decls.h (class Method): Remove.
+       * ast/rust-ast-visitor.h
+       (ASTVisitor::visit): Remove AST::Method visitor.
+       (DefaultASTVisitor::visit): Likewise.
+       * ast/rust-ast-visitor.cc
+       (DefaultASTVisitor::visit):
+       Remove AST::Method visitor, handle self_param in AST::Function visitor.
+       * checks/errors/rust-feature-gate.cc
+       (FeatureGate::visit): Remove AST::Method visitor.
+       * checks/errors/rust-feature-gate.h
+       (FeatureGate::visit): Likewise..
+       * expand/rust-cfg-strip.cc
+       (CfgStrip::visit):
+       Remove AST::Method visitor, handle self_param in AST::Function visitor.
+       * expand/rust-cfg-strip.h
+       (CfgStrip::visit): Remove AST::Method visitor.
+       * expand/rust-derive-clone.cc
+       (DeriveClone::clone_fn): Return AST::Function instead of AST::Method.
+       * expand/rust-derive.h (DeriveVisitor::visit): Remove AST::Method visitor.
+       * expand/rust-expand-visitor.cc
+       (ExpandVisitor::visit):
+       Remove AST::Method visitor, handle self_param in AST::Function visitor.
+       * expand/rust-expand-visitor.h:
+       (ExpandVisitor::visit): Remove AST::Method visitor.
+       * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise.
+       * hir/rust-ast-lower-base.h (ASTLoweringBase::visit): Likewise.
+       * hir/rust-ast-lower-implitem.h
+       (ASTLowerImplItem::visit):
+       Remove AST::Method visitor, handle self_param in AST::Function visitor.
+       * parse/rust-parse-impl.h: Include optional.h.
+       (Parser::parse_function): Adjust AST::Function construction.
+       (Parser::parse_inherent_impl_function_or_method):
+       Construct AST::Function instead of AST::Method,
+       adjust AST::Function construction.
+       (Parser::parse_trait_impl_function_or_method): Likewise.
+       (Parser::parse_method):
+       Return std::unique_ptr<AST::Function> instead of AST::Method.
+       * parse/rust-parse.h
+       (Parser::parse_method): Likewise.
+       * resolve/rust-ast-resolve-base.cc
+       (ResolverBase::visit): Remove AST::Method visitor.
+       * resolve/rust-ast-resolve-base.h
+       (ResolverBase::visit): Likewise.
+       * resolve/rust-ast-resolve-implitem.h
+       (ResolveToplevelImplItem::visit): Likewise.
+       * resolve/rust-ast-resolve-item.cc
+       (ResolveItem::visit): Remove AST::Method visitor,
+       handle self_param in AST::Function visitor.
+       * resolve/rust-ast-resolve-item.h
+       (ResolveItem::visit): Remove AST::Method visitor.
+       * resolve/rust-default-resolver.cc
+       (DefaultResolver::visit): Remove AST::Method visitor.
+       * resolve/rust-default-resolver.h
+       (DefaultResolver::visit): Likewise.
+       * resolve/rust-early-name-resolver.cc
+       (EarlyNameResolver::visit): Remove AST::Method visitor,
+       handle self_param in AST::Function visitor.
+       * resolve/rust-early-name-resolver.h
+       (EarlyNameResolver::visit): Remove AST::Method visitor.
+       * resolve/rust-toplevel-name-resolver-2.0.cc
+       (TopLevel::visit): Likewise.
+       * resolve/rust-toplevel-name-resolver-2.0.h
+       (TopLevel::visit): Likewise.
+       * util/rust-attributes.cc
+       (AttributeChecker::visit): Likewise.
+       * util/rust-attributes.h
+       (AttributeChecker::visit): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_named_function_param): Add
+       new parsing ability.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.cc (ExternalFunctionItem::as_string): Adapt as_string
+       function to the new ast representation.
+       (NamedFunctionParam::as_string): Likewise.
+       * ast/rust-item.h: Add a function to test whether a FunctionParam has
+       a name pattern.
+       * expand/rust-cfg-strip.cc (CfgStrip::visit): Adapt cfg strip visitor
+       for the new variadic arguments.
+       * hir/rust-ast-lower-extern.h: Adapt lowering to the new variadic
+       function representation.
+       * metadata/rust-export-metadata.cc (ExportContext::emit_function):
+       Change call to constructor.
+       * parse/rust-parse-impl.h (Parser::parse_named_function_param): Change
+       NamedFunctionParam parsing to accomodate new variadic representation.
+       (Parser::parse_external_item): Change external item parsing to use the
+       new NamedFunctionParam variadics.
+       * parse/rust-parse.h: Add new parsing function prototypes.
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Rework token
+       collection to take into account variadic parameters.
+       * ast/rust-ast-visitor.cc: Likewise.
+       * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Change function
+       bound to avoid getting the type of a variadic parameter.
+       * resolve/rust-ast-resolve-item.cc (ResolveExternItem::visit):
+       Likewise.
+       * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
+       Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-item.h (class NamedFunctionParam): Add variadic boolean and
+       another constructor.
+       * hir/rust-ast-lower-extern.h: Avoid last parameter when variadic.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-item.h: Add a getter to check if a given function is
+       variadic.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_function_param): Parse
+       variadic functions.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-item.h (class FunctionParam): Add some informations to
+       function parameters in order to be able to store variadic argument as
+       a function parameter.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Adapt
+       the call to the new visit functions.
+       (ASTValidation::check): Launch the parent class visitor root function.
+       * checks/errors/rust-ast-validation.h (class ASTValidation): Inherit
+       from the contextual visitor.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-visitor.cc (ContextualASTVisitor::visit): Add multiple
+       context saving calls.
+       * ast/rust-ast-visitor.h (class DefaultASTVisitor): Make visit
+       functions virtual.
+       (class ContextualASTVisitor): Add a stack like container for the
+       current context chain.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Make-lang.in: Add the new visitor object file.
+       * ast/rust-ast-visitor.h (class DefaultASTVisitor): Create the default
+       visitor class.
+       * ast/rust-ast.h: Add a new reference getter for visitor pattern.
+       * ast/rust-ast-visitor.cc: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h: Add some missing mutable reference getters.
+       * ast/rust-expr.h: Likewise.
+       * ast/rust-item.h: Likewise.
+       * ast/rust-path.h: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Check for presence
+       of a type and use the default value instead of the type.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * checks/errors/rust-ast-validation.cc (ASTValidation::check): Launch
+       check over the whole given crate.
+       (ASTValidation::visit): Implement visitor for some members of the ast.
+       * checks/errors/rust-ast-validation.h: Update some prototype according
+       to implemented visitor functions. Also add a context tracker.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust-session-manager.cc (Session::compile_crate): Add call to ast
+       validation.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lang.opt: Add the new compile options and update the enum values.
+       * rust-session-manager.h (struct CompileOptions): Add the new steps to
+       the enumeration.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Make-lang.in: Add the new object file the list.
+       * checks/errors/rust-ast-validation.cc: New file.
+       * checks/errors/rust-ast-validation.h: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-cfg-strip.cc (CfgStrip::visit): Add expr value check.
+       * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Likewise.
+       * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
+       Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h: Move implementation from here...
+       * ast/rust-ast.cc (SingleASTNode::SingleASTNode): ...to here.
+       (SingleASTNode::operator=): ...and here...
+       (SingleASTNode::accept_vis): ...and here...
+       (SingleASTNode::is_error): ...and here...
+       (SingleASTNode::as_string): ...also here.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h: Add override specifier.
+       * ast/rust-item.h: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-macro-invoc-lexer.cc (MacroInvocLexer::split_current_token):
+       Add implementation for multiple token split.
+       * expand/rust-macro-invoc-lexer.h: Add function prototype.
+       * expand/rust-proc-macro-invoc-lexer.cc (ProcMacroInvocLexer::split_current_token):
+       Add implementation for 2+ token split for procedural macros.
+       * expand/rust-proc-macro-invoc-lexer.h: Add function prototype.
+       * lex/rust-lex.cc (Lexer::split_current_token): Add function to split a
+       token in multiple other tokens.
+       * lex/rust-lex.h: Add function prototype for split_current_token.
+       * parse/rust-parse-impl.h (Parser::left_denotation): Handle float tuple
+       index identified as a float literal.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * hir/rust-hir-dump.cc (Dump::visit): Remove obsolete member.
+       * hir/tree/rust-hir-expr.h (class BorrowExpr): Remove obsolete member.
+       * hir/tree/rust-hir.cc (BorrowExpr::as_string): Remove obsolete member.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Fix typo.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-compile-expr.cc
+       (patterns_mergeable): Remove.
+       (struct PatternMerge): Remove.
+       (sort_tuple_patterns): Remove.
+       (simplify_tuple_match): Remove.
+       (CompileExpr::visit): Modify compilation of MatchExpr.
+       * backend/rust-compile-pattern.cc
+       (CompilePatternCaseLabelExpr::visit): Replace with...
+       (CompilePatternCheckExpr::visit): ...this.
+       * backend/rust-compile-pattern.h
+       (class CompilePatternCaseLabelExpr): Replace with...
+       (class CompilePatternCheckExpr): ...this.
+       * backend/rust-compile-type.cc
+       (TyTyResolveCompile::get_implicit_enumeral_node_type):
+       Make enumeral type equivalent to isize.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * backend/rust-compile-base.cc (get_attributes): Add documentation for
+       indices 3 and 4.
+       (get_trait_name): Add documentation for index 1.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Make-lang.in: Add gcc/rust/backend/rust-compile-proc-macro.cc to the
+       list of file to compile.
+       * backend/rust-compile.cc (attribute_array): Move to
+       rust-compile-proc-macro.cc
+       (derive_proc_macro): Likewise.
+       (bang_proc_macro): Likewise.
+       (attribute_proc_macro): Likewise.
+       (proc_macro_payload): Likewise.
+       (proc_macro): Likewise.
+       (proc_macro_buffer): Likewise.
+       (entrypoint): Likewise.
+       (proc_macro_array): Likewise.
+       (CompileCrate::add_proc_macro_symbols): Likewise.
+       * backend/rust-compile-proc-macro.cc: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * backend/rust-compile.cc (proc_macro_buffer): Update type builder with
+       array length information.
+       (proc_macro_array): Update type initializer with array length
+       information.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * backend/rust-compile.cc (build_attribute_array): Renamed from...
+       (attribute_array): ...to attribute array.
+       (build_derive_proc_macro): Likewise from...
+       (derive_proc_macro): ... to derive_proc_macro.
+       (build_bang_proc_macro): Likewise from...
+       (bang_proc_macro): ...to bang_proc_macro.
+       (build_attribute_proc_macro): Likewise from...
+       (attribute_proc_macro): ... to attribute_proc_macro.
+       (build_proc_macro_payload): Likewise from...
+       (proc_macro_payload): to proc_macro_payload.
+       (build_proc_macro): Likewise from...
+       (proc_macro): ...to proc_macro.
+       (build_proc_macro_buffer): Likewise from...
+       (proc_macro_buffer): ... to proc_macro_buffer.
+       (build_entrypoint): Likewise from...
+       (entrypoint): ...to entrypoint.
+       (init_derive_proc_macro): Renamed to it's shorter counterpart.
+       (init_attribute_proc_macro): Likewise.
+       (init_bang_proc_macro): Likewise.
+       (init_proc_macro): Likewise.
+       (initialize_proc_macro_array): Likewise.
+       (proc_macro_array): Likewise.
+       (CompileCrate::add_proc_macro_symbols): Update function calls.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * backend/rust-compile-base.h: Make static function address_expression
+       public.
+       * backend/rust-compile.cc (CompileCrate::add_proc_macro_symbols): Add
+       new global variable in export function.
+       (build_bang_proc_macro): Add a function to build the bang proc macro
+       structure type.
+       (build_proc_macro): Add a function to build the proc macro structure
+       type.
+       (build_proc_macro_payload): Add a function to build the proc macro
+       union used in proc macro structures.
+       (init_derive_proc_macro): Add a function to initialize custom derive
+       proc macros.
+       (init_attribute_proc_macro): Add a function to initialize attribute
+       proc macros.
+       (init_bang_proc_macro): Add a function to initialize bang proc macros.
+       (init_proc_macro): Add a function to initialize proc macro structures.
+       (initialize_proc_macro_array): Add a function to initialize the proc
+       macro buffer array.
+       (CompileCrate::add_proc_macro_symbols): Add call to the new functions
+       to correctly initialize proc macros as well as their entrypoint.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-proc-macro.cc (CustomDeriveProcMacro::CustomDeriveProcMacro):
+       Remove constant string declaration.
+       (load_macros_array): Add call to the new generation function.
+       (generate_proc_macro_decls_symbol): Add a new function to generate the
+       entrypoint symbol name from the stable crate id.
+       (PROC_MACRO_DECLS_FMT_ARGS):
+       New macro to keep formats arguments in sync between each call.
+       * expand/rust-proc-macro.h (generate_proc_macro_decls_symbol): Add
+       function prototype.
+       * rust-system.h: Include <iomanip>.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * backend/rust-compile.cc (build_attribute_array): Add a function to
+       build the attribute array type.
+       (build_derive_proc_macro): Add a function to build the derive proc
+       macro type.
+       (build_bang_proc_macro): Add a function to build the bang proc macro
+       type.
+       (build_attribute_proc_macro): Add a function to build the attribute
+       proc macro type.
+       (build_proc_macro): Add a function to build the proc macro tagged union
+       type.
+       (build_proc_macro_buffer): Add a function to build the proc macro
+       buffer type.
+       (build_entrypoint): Add a function to build the proc macro entrypoint
+       type.
+       * backend/rust-compile.h: Add function prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * backend/rust-compile-context.h: Add getters.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * backend/rust-compile-base.cc (HIRCompileBase::setup_fndecl):
+       Make the function non static in order to be able to access the
+       compile context. Also add the whole proc macro infomrmation
+       collection.
+       (get_attributes): Add a function to retrieve the different
+       attributes from a derive procedural macro definition attribute.
+       (get_trait_name): Add a function to retrieve the trait name from
+       a derive procedural macro definition attribute.
+       * backend/rust-compile-base.h: Add function prototypes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * backend/rust-compile-base.cc (HIRCompileBase::setup_abi_options):
+       Reformat uncorrectly formatted comments.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * backend/rust-compile-context.h (struct CustomDeriveInfo): Add
+       new derive procedural macro metadata information holder for
+       mappings.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h: Add const getter.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * backend/rust-compile-base.cc (handle_proc_macro_common): Add
+       new attribute "gccrs_proc_macro" to all procedural macro
+       functions.
+       (get_abi): Add a function to retrieve the correct ABI depending
+       on wether the function is a proc macro or not.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * backend/rust-compile-base.cc (HIRCompileBase::setup_fndecl):
+       Add proc macro handlers dispatch.
+       (handle_proc_macro_common): Add a function for common behavior
+       between all kinds of proc macros.
+       * backend/rust-compile-base.h: Add function prototypes.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::setup_loop): Move.
+       (ExprStmtBuilder::get_label_ctx): Move.
+       (ExprStmtBuilder::get_unnamed_loop_ctx): Moved.
+       (ExprStmtBuilder::visit): BIR improvements.
+       * checks/errors/borrowck/rust-bir-builder-expr-stmt.h: Refactor.
+       * checks/errors/borrowck/rust-bir-builder-internal.h (class LifetimeResolver):
+       Refactor.
+       (struct BuilderContext): Move.Refactor.
+       (optional_from_ptr): Map on null ptr.
+       * checks/errors/borrowck/rust-bir-builder-lazyboolexpr.h (class LazyBooleanExprBuilder):
+       Refactor.
+       * checks/errors/borrowck/rust-bir-builder-pattern.h: Refactor.
+       * checks/errors/borrowck/rust-bir-builder-struct.h (class StructBuilder): Refactor.
+       * checks/errors/borrowck/rust-bir-builder.h: Refactor.
+       * checks/errors/borrowck/rust-bir-dump.cc (Dump::go): Refactor.
+       (Dump::visit): Refactor.
+       (Dump::visit_place): Refactor.
+       (Dump::visit_move_place): Refactor.
+       (Dump::visit_lifetime): Refactor.
+       * checks/errors/borrowck/rust-bir-dump.h: Refactor.
+       * checks/errors/borrowck/rust-bir-place.h: Refactor.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * checks/errors/borrowck/dev-notes.md: New file.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * checks/errors/borrowck/bir-design-notes.md: New file.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::visit): Use goto.
+       * checks/errors/borrowck/rust-bir-builder-internal.h: Explicit goto.
+       * checks/errors/borrowck/rust-bir-builder-lazyboolexpr.h: Explicit goto.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::visit): Continue.
+       (ExprStmtBuilder::setup_loop): Continue.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * checks/errors/borrowck/rust-bir-dump.cc (simplify_cfg): Detech infinite loops.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::visit): Push ctx.
+       (ExprStmtBuilder::setup_loop): Common loop infractructure setup.
+       * checks/errors/borrowck/rust-bir-builder-expr-stmt.h: Loop ctx.
+       * checks/errors/borrowck/rust-bir-builder-internal.h (struct BuilderContext): Loop ctx.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * checks/errors/borrowck/rust-bir-dump.cc (Dump::go): Improve jumps dump.
+       (Dump::visit): Improve jumps dump.
+       * checks/errors/borrowck/rust-bir-dump.h (class Dump): Improve jumps dump.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * checks/errors/borrowck/rust-bir-dump.cc (simplify_cfg): Simplify cfg logic.
+       (Dump::go): Run simplify cfg.
+       * checks/errors/borrowck/rust-bir-dump.h: Option to simplify cfg.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * checks/errors/borrowck/rust-bir-dump.cc (Dump::go): Use new print.
+       (print_comma_separated): Comma separation print.
+       (Dump::visit): Use new print.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * Make-lang.in: Build BIR dump.
+       * checks/errors/borrowck/rust-borrow-checker.cc (mkdir_wrapped): Cross-platform mkdir.
+       (dump_function_bir): Save dump to file.
+       (BorrowChecker::go): Run dump during borrowck.
+       * checks/errors/borrowck/rust-bir-dump.cc: New file.
+       * checks/errors/borrowck/rust-bir-dump.h: New file.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * Make-lang.in: Compile BIR expr visitor.
+       * checks/errors/borrowck/rust-borrow-checker.cc (BorrowChecker::go): Use BIR builder.
+       * rust-session-manager.cc (Session::compile_crate): Run borrow checker.
+       * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc: New file.
+       * checks/errors/borrowck/rust-bir-builder-expr-stmt.h: New file.
+       * checks/errors/borrowck/rust-bir-builder-internal.h: New file.
+       * checks/errors/borrowck/rust-bir-builder-lazyboolexpr.h: New file.
+       * checks/errors/borrowck/rust-bir-builder-pattern.h: New file.
+       * checks/errors/borrowck/rust-bir-builder-struct.h: New file.
+       * checks/errors/borrowck/rust-bir-builder.h: New file.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * checks/errors/borrowck/rust-borrow-checker.cc: Include to compile new code.
+       * checks/errors/borrowck/rust-bir-place.h: New file.
+       * checks/errors/borrowck/rust-bir-visitor.h: New file.
+       * checks/errors/borrowck/rust-bir.h: New file.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * lang.opt: CLI flag.
+       * rust-session-manager.cc (Session::compile_crate): Guard execution.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * checks/errors/borrowck/rust-borrow-checker.cc (BorrowChecker::BorrowChecker): Opt dump.
+       (BorrowChecker::go): Opt dump.
+       * checks/errors/borrowck/rust-borrow-checker.h (class BorrowChecker): Opt dump.
+       * lang.opt: Add compile until borrowcheck.
+       * rust-session-manager.cc (Session::enable_dump): Add BIR.
+       (Session::compile_crate): Handle new options.
+       * rust-session-manager.h (struct CompileOptions): Add BIR.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * Make-lang.in: Build borrowck.
+       * checks/errors/borrowck/rust-borrow-checker.cc: New file.
+       * checks/errors/borrowck/rust-borrow-checker.h: New file.
+       * checks/errors/borrowck/rust-function-collector.h: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-pattern.h: Add override modifier to overriding methods.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-item.h: Add a new constructor for const with no value
+       expression.
+       * parse/rust-parse-impl.h (Parser::parse_const_item): Allow const with
+       no expression value.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * hir/tree/rust-hir-path.h: Avoid copy in getter.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * backend/rust-compile-expr.cc (CompileExpr::visit): Rename method.
+       * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Rename method.
+       * checks/errors/rust-const-checker.cc (ConstChecker::visit): Rename method.
+       * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Rename method.
+       * hir/rust-hir-dump.cc (Dump::visit): Rename method.
+       * hir/tree/rust-hir-expr.h: Rename method.
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Rename method.
+       * typecheck/rust-tyty.h: Rename method.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * backend/rust-compile-base.cc: Rename method.
+       * backend/rust-compile-expr.cc (sort_tuple_patterns): Rename method.
+       * backend/rust-compile-pattern.cc (CompilePatternCaseLabelExpr::visit): Rename method.
+       (CompilePatternBindings::visit): Rename method.
+       (CompilePatternLet::visit): Rename method.
+       * backend/rust-compile-stmt.cc (CompileStmt::visit): Rename method.
+       * backend/rust-compile-var-decl.h: Rename method.
+       * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::translate): Rename method.
+       * hir/rust-hir-dump.cc (Dump::visit): Rename method.
+       * hir/tree/rust-hir-path.h: Rename method.
+       * hir/tree/rust-hir-pattern.h: Rename method.
+       * hir/tree/rust-hir.h: Rename method.
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::Resolve): Rename method.
+       (TypeCheckPattern::visit): Rename method.
+       (ClosureParamInfer::visit): Rename method.
+       * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Rename method.
+       * util/rust-hir-map.cc (Mappings::insert_hir_pattern): Rename method.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * hir/tree/rust-hir-expr.h: Add getter for name.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Implement for tuple pat.
+       * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::visit): Implement for tupple pat.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * hir/tree/rust-hir-path.h: Avoid copy in getter.
+       * hir/tree/rust-hir-pattern.h: Avoid copy in getter.
+       * hir/tree/rust-hir.h: Avoid copy in getter.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * resolve/rust-ast-resolve-implitem.h
+       (ResolveToplevelImplItem::go): Take AssociatedItem as parameter.
+       (ResolveTopLevelTraitItems::go): Likewise.
+       * resolve/rust-ast-resolve-item.cc
+       (ResolveTraitItems::go): Likewise.
+       (ResolveItem::resolve_impl_item): Likewise.
+       (ResolveImplItems::go): Likewise.
+       * resolve/rust-ast-resolve-item.h
+       (ResolveTraitItems::go): Likewise.
+       (ResolveItem::resolve_impl_item): Likewise.
+       (ResolveImplItems::go): Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/rust-ast-lower-implitem.h
+       (ASTLoweringImplItem::translate): Take AssociatedItem as parameter.
+       (ASTLoweringTraitItem::translate): Likewise.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * backend/rust-compile-expr.cc (CompileExpr::visit): Bail on labelled block.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Add loop ctx.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Resolve using loop logic.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * hir/rust-ast-lower.cc (ASTLoweringBlock::visit): Call loop lowering and add it to constr.
+       * hir/tree/rust-hir-expr.h (class LoopLabel): Move before BlockExpr and add to BlockExpr.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * ast/rust-ast-builder.cc (AstBuilder::block): Add label arg to constructor call.
+       * ast/rust-expr.h (class LoopLabel): Move before BlockExpr.
+       (class BlockExpr): Add LoopLabel member.
+       * expand/rust-derive-clone.cc (DeriveClone::clone_fn): Add label arg to constructor call.
+       * parse/rust-parse-impl.h (Parser::parse_block_expr): Add label parameter.
+       (Parser::parse_labelled_loop_expr): Add label arg to constructor call.
+       * parse/rust-parse.h: Add label arg to constructor call.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-ast.h
+       (class AssociatedItem):
+       New, based on TraitItem, InherentImplItem, and TraitImplItem classes.
+       (class TraitItem): Inherit from AssociatedItem.
+       (class InherentImplItem): Likewise.
+       (class TraitImplItem): Likewise.
+       * ast/rust-item.h
+       (class Method): Update cloning functions.
+       (class Function): Likewise.
+       (class TypeAlias): Likewise.
+       (class ConstantItem): Likewise.
+       (class TraitItemFunc): Likewise.
+       (class TraitItemMethod): Likewise.
+       (class TraitItemConst): Likewise.
+       (class TraitItemType): Likewise.
+       * ast/rust-macro.h
+       (class MacroInvocation): Likewise.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * backend/rust-mangle.cc (v0_identifier): Fix broken encoding.
+       (v0_scope_path): Modify paramter.
+       (v0_path): Fix namespace for modules.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_closure_expr_pratt): Fix
+       closure parsing function to handle consecutive parameter lists.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-macro.h: Add PATH fragment to follow set restrictions.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::is_macro_rules_def): Add a function
+       that checks tokens given by the lexer represents an accurate macro
+       definition. This will reduce code duplication.
+       (Parser::parse_item): Replace condition with call to new checking
+       function.
+       (Parser::parse_stmt): Likewise.
+       * parse/rust-parse.h: Add function prototype for is_macro_rules_def.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_expr): Fix range from expr.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_item): Relax constraints
+       around default identifier at item scope to accept "default" macros.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_path_expr_segment): Accept
+       left shift tokens in order to let generic parsing function split the
+       token.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-ast.h
+       (Pattern::get_pattern_node_id): Rename to...
+       (Pattern::get_node_id): ...here.
+       * ast/rust-macro.h
+       (MacroInvocation::get_pattern_node_id): Rename to...
+       (MacroInvocation::get_node_id): ...here.
+       * ast/rust-path.h
+       (PathInExpression::get_pattern_node_id): Remove.
+       (QualifiedPathInExpression::get_pattern_node_id): Remove.
+       * ast/rust-pattern.h
+       (LiteralPattern::get_pattern_node_id): Remove.
+       (IdentifierPattern::get_pattern_node_id): Remove.
+       (WildcardPattern::get_pattern_node_id): Remove.
+       (RestPattern::get_pattern_node_id): Rename to...
+       (RestPattern::get_node_id): ...here.
+       (RangePattern::get_pattern_node_id): Remove.
+       (ReferencePattern::get_pattern_node_id): Remove.
+       (StructPattern::get_pattern_node_id): Remove.
+       (TupleStructPattern::get_pattern_node_id): Remove.
+       (TuplePattern::get_pattern_node_id): Remove.
+       (GroupedPattern::get_pattern_node_id): Remove.
+       (SlicePattern::get_pattern_node_id): Remove.
+       (AltPattern::get_pattern_node_id): Remove.
+       * resolve/rust-early-name-resolver.cc
+       (EarlyNameResolver::visit):
+       Use get_node_id instead of get_pattern_node_id.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_expr): Add comma delimiter.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_visibility): Relax constraints
+       over public visibility return condition in order to accept pub unit
+       types.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * typecheck/rust-tyty.cc (BaseType::is_unit): Refactor.
+       (BaseType::satisfies_bound): Refactor.
+       (BaseType::get_root): Refactor.
+       (BaseType::destructure): Refactor.
+       (BaseType::monomorphized_clone): Refactor.
+       (BaseType::is_concrete): Refactor.
+       (InferType::InferType): Refactor.
+       (InferType::clone): Refactor.
+       (InferType::apply_primitive_type_hint): Refactor.
+       (StructFieldType::is_equal): Refactor.
+       (ADTType::is_equal): Refactor.
+       (handle_substitions): Refactor.
+       (ADTType::handle_substitions): Refactor.
+       (TupleType::TupleType): Refactor.
+       (TupleType::is_equal): Refactor.
+       (TupleType::handle_substitions): Refactor.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * typecheck/rust-tyty.cc (InferType::InferType): Use static constant for kind information.
+       (ErrorType::ErrorType): Use static constant for kind information.
+       (TupleType::TupleType): Use static constant for kind information.
+       (BoolType::BoolType): Use static constant for kind information.
+       (IntType::IntType): Use static constant for kind information.
+       (UintType::UintType): Use static constant for kind information.
+       (FloatType::FloatType): Use static constant for kind information.
+       (USizeType::USizeType): Use static constant for kind information.
+       (ISizeType::ISizeType): Use static constant for kind information.
+       (CharType::CharType): Use static constant for kind information.
+       (ReferenceType::ReferenceType): Use static constant for kind information.
+       (PointerType::PointerType): Use static constant for kind information.
+       (ParamType::ParamType): Use static constant for kind information.
+       (StrType::StrType): Use static constant for kind information.
+       (NeverType::NeverType): Use static constant for kind information.
+       (PlaceholderType::PlaceholderType): Use static constant for kind information.
+       * typecheck/rust-tyty.h: Add static kind information to all TyTy classes.
+       Create safe cast and check methods.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_type_param_bound): Add missing
+       case for lifetime switch.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lex/rust-token.cc (Token::as_string): Update function to output scope
+       resolution tokens correctly.
+       * parse/rust-parse-impl.h (Parser::parse_generic_param): Change call to
+       as_string.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * backend/rust-compile-context.h: Modify declaration.
+       * backend/rust-mangle.cc (struct V0Path): New struct.
+       (v0_path): New function.
+       (legacy_mangle_name): Take Context as argument.
+       (v0_numeric_prefix): Fix type strings.
+       (v0_complex_type_prefix): New function.
+       (v0_add_integer_62): Deleted
+       (v0_integer_62): New function.
+       (v0_add_opt_integer_62): Deleted.
+       (v0_opt_integer_62): New function.
+       (v0_add_disambiguator): Deleted.
+       (v0_disambiguator): New function.
+       (v0_type_prefix): Support more types.
+       (v0_generic_args): New function.
+       (v0_add_identifier): Deleted.
+       (v0_identifier): New function.
+       (v0_type_path): New function.
+       (v0_function_path): New function.
+       (v0_scope_path): New function.
+       (v0_crate_path): New function.
+       (v0_inherent_or_trait_impl_path): New function.
+       (v0_mangle_item): Use v0_path.
+       (Mangler::mangle_item): Take Context as argument.
+       * backend/rust-mangle.h (class Context): Add forward declaration.
+       * hir/tree/rust-hir-item.h: Fix include.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/tree/rust-hir-pattern.h
+       (TupleStructItems::clone_tuple_struct_items_impl): Rename to...
+       (TupleStructItems::clone_tuple_items_impl): ...here.
+       (TupleStructItemsNoRange::clone_tuple_struct_items_impl): Rename to...
+       (TupleStructItemsNoRange::clone_tuple_items_impl): ...here.
+       (TupleStructItemsRange::clone_tuple_struct_items_impl): Rename to...
+       (TupleStructItemsRange::clone_tuple_items_impl): ...here.
+       (TuplePatternItems::clone_tuple_pattern_items_impl): Rename to...
+       (TuplePatternItems::clone_tuple_items_impl): ...here.
+       (TuplePatternItemsMultiple::clone_tuple_pattern_items_impl): Rename to...
+       (TuplePatternItemsMultiple::clone_tuple_items_impl): ...here.
+       (TuplePatternItemsRanged::clone_tuple_pattern_items_impl): Rename to...
+       (TuplePatternItemsRanged::clone_tuple_items_impl): ...here.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/tree/rust-hir-pattern.h
+       (TuplePatternItems::get_pattern_type): Rename to...
+       (TuplePatternItems::get_item_type): ...here.
+       (TuplePatternItemsMultiple::get_pattern_type): Rename to...
+       (TuplePatternItemsMultiple::get_item_type): ...here.
+       (TuplePatternItemsRanged::get_pattern_type): Rename to...
+       (TuplePatternItemsRanged::get_item_type): ...here.
+       * backend/rust-compile-expr.cc: Adjust calls to renamed methods.
+       * backend/rust-compile-pattern.cc: Likewise.
+       * typecheck/rust-hir-type-check-pattern.cc: Likewise.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * backend/rust-compile-expr.cc (CompileExpr::visit): Merge 2 if clauses.
+       * backend/rust-compile-extern.h: Fix typo in comment.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * parse/rust-parse-impl.h: Add missing token consumption
+
+2024-01-16  Mohammed Rizan Farooqui  <rizanfarooqui@gmail.com>
+
+       * expand/rust-macro-builtins.cc (MacroBuiltin::include_str_handler): Comment removed
+       (MacroBuiltin::env_handler): Comment removed
+       (MacroBuiltin::cfg_handler): Comment removed
+       (MacroBuiltin::line_handler): Comment removed
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * backend/rust-compile.cc (HIRCompileBase::coercion_site1): Fix wrong cast
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust-session-manager.cc (Session::expansion): Add early break on
+       error.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * util/rust-canonical-path.h: Add new segment kind for inherent impl.
+       * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): Use it.
+       * resolve/rust-ast-resolve-toplevel.h: Use it.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-expr.h: Fix spelling of "doesn't".
+       * backend/rust-compile-expr.cc: Fix spelling of "accessors".
+       * backend/rust-compile-implitem.h: Fix spelling of "normal".
+       * backend/rust-constexpr.cc: Fix spelling of "actual".
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * hir/rust-hir-dump.cc (Dump::debug): New.
+       (debug): New.
+       * hir/rust-hir-dump.h (debug): New.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * Make-lang.in: fixup formatting
+       * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): remove old check
+       * rust-session-manager.cc (Session::compile_crate): call new lint
+       * resolve/rust-ast-verify-assignee.h: Removed.
+       * checks/errors/rust-readonly-check.cc: New file.
+       * checks/errors/rust-readonly-check.h: New file.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit):
+       Added ErrorCode & more fixit hints.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-block.h: remove HIR::ForLoopExpr
+       * backend/rust-compile-expr.h: likewise
+       * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): likewise
+       * checks/errors/privacy/rust-privacy-reporter.h: likewise
+       * checks/errors/rust-const-checker.cc (ConstChecker::visit): likewise
+       * checks/errors/rust-const-checker.h: likewise
+       * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): likewise
+       * checks/errors/rust-unsafe-checker.h: likewise
+       * checks/lints/rust-lint-marklive.h: likewise
+       * hir/rust-ast-lower.cc (ASTLoweringExprWithBlock::visit): likewise
+       * hir/rust-hir-dump.cc (Dump::visit): likewise
+       * hir/rust-hir-dump.h: likewise
+       * hir/tree/rust-hir-expr.h (class ForLoopExpr): likewise
+       * hir/tree/rust-hir-full-decls.h (class ForLoopExpr): likewise
+       * hir/tree/rust-hir-visitor.h: likewise
+       * hir/tree/rust-hir.cc (ForLoopExpr::as_string): likewise
+       (ForLoopExpr::accept_vis): likewise
+       * typecheck/rust-hir-type-check-expr.h: likewise
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * backend/rust-compile-expr.cc (CompileExpr::visit): Fix typo in varIadic.
+       * backend/rust-compile-type.cc (TyTyResolveCompile::visit): Likewise.
+       * rust-backend.h (function_type_varadic): Rename into ...
+       (function_type_variadic): ... this.
+       * rust-gcc.cc (function_type_varadic): Rename into ...
+       (function_type_variadic): ... this.
+       * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): Likewise.
+       * typecheck/rust-tyty.h (is_varadic): Renamed into ...
+       (is_variadic): ... this.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * backend/rust-compile-base.cc (HIRCompileBase::compile_function):
+       Fix typo in substitutions.
+       (HIRCompileBase::resolve_method_address): Likewise.
+       * backend/rust-compile-extern.h (CompileExternItem::visit):
+       Likewise.
+       * backend/rust-compile-implitem.cc (CompileTraitItem::visit):
+       Likewise.
+       * backend/rust-compile-intrinsic.cc (maybe_override_ctx):
+       Likewise.
+       * backend/rust-compile-item.cc (CompileItem::visit): Likewise.
+       * backend/rust-compile-resolve-path.cc
+       (HIRCompileBase::query_compile): Likewise.
+       * typecheck/rust-coercion.cc (TypeCoercionRules::do_coercion):
+       Likewise.
+       * typecheck/rust-hir-type-check-item.cc
+       (TypeCheckItem::ResolveImplBlockSelfWithInference): Likewise.
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit):
+       Likewise.
+       * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit):
+       Likewise.
+       * typecheck/rust-tyty.cc (BaseType::has_subsititions_defined):
+       Renamed into ...
+       (BaseType::has_substitutions_defined): ... this.
+       (ADTType::is_equal): Fix typo in substitutions.
+       (handle_substitions): Likewise.
+       (FnType::is_equal): Likewise.
+       (FnType::handle_substitions): Likewise.
+       * typecheck/rust-tyty.h (has_subsititions_defined): Renamed into
+       ...
+       (has_substitutions_defined): ... this.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-compile-intrinsic.cc
+       (get_identifier): Add declaration.
+       (assume_handler): New.
+       (generic_intrinsics): Add assume_handler entry.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-gcc.cc
+       (Backend::wchar_type): Store static wchar tree.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h
+       (complex_type): Remove.
+       (complex_constant_expression): Remove.
+       (real_part_expression): Remove.
+       (imag_part_expression): Remove.
+       (complex_expression): Remove.
+       * rust-gcc.cc
+       (complex_type): Remove.
+       (complex_constant_expression): Remove.
+       (real_part_expression): Remove.
+       (imag_part_expression): Remove.
+       (complex_expression): Remove.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-gcc.cc
+       (namespace Backend):
+       Use namespace definition instead of qualified names.
+
+2024-01-16  liushuyu  <liushuyu011@gmail.com>
+
+       * backend/rust-compile-intrinsic.cc: add `copy`
+       intrinsics and make `copy_nonoverlapping` handler more generic
+
+2024-01-16  liushuyu  <liushuyu011@gmail.com>
+
+       * backend/rust-builtins.cc: add `expect` builtin definition.
+       * backend/rust-compile-intrinsic.cc: add `likely` and `unlikely`
+       intrinsics handler.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust_error_codes.def: Moved to...
+       * rust-error-codes.def: ...here...
+       * rust-diagnostics.h: ...and update references.
+
+2024-01-16  Guillaume Gomez  <guillaume1.gomez@gmail.com>
+
+       * backend/rust-compile-intrinsic.cc: Simplify `make_unsigned_long_tree`
+       * rust-backend.h: Remove `integer_constant_expression`
+       * rust-gcc.cc: Remove `integer_constant_expression`
+
+2024-01-16  Dave Evans  <dave@dmetwo.org>
+
+       * backend/rust-compile-pattern.cc (CompilePatternCaseLabelExpr::visit):
+       Add AltPattern visitor function
+       * backend/rust-compile-pattern.h:
+       Update CompilePatternCaseLabelExpr::visit(AltPattern&).
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
+       Update AltPattern visitor
+
+2024-01-16  Guillaume Gomez  <guillaume1.gomez@gmail.com>
+
+       * backend/rust-compile-intrinsic.cc: Remove unused argument
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
+       Added new error message, rich location and error code.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h
+       (class Backend): Convert to ...
+       (namespace Backend): ... namespace.
+       * rust-gcc.cc
+       (Backend::Backend): Rename to ...
+       (Backend::init): ... here.
+       (rust_get_backend): Remove.
+       * rust-session-manager.cc
+       (rust_get_backend): Remove.
+       (Session::init): Use Backend::init instead of rust_get_backend.
+       (Session::compile_crate):
+       Initialize Context without pointer to Backend.
+       * rust-session-manager.h
+       (Session::backend): Remove.
+       * backend/rust-compile-context.cc
+       (Context::Context): Remove pointer to Backend.
+       * backend/rust-compile-context.h
+       (class Context): Remove pointer to Backend, update function calls.
+       * backend/rust-compile-base.cc: Update function calls.
+       * backend/rust-compile-block.cc: Likewise.
+       * backend/rust-compile-expr.cc: Likewise.
+       * backend/rust-compile-extern.h: Likewise.
+       * backend/rust-compile-fnparam.cc: Likewise.
+       * backend/rust-compile-intrinsic.cc: Likewise.
+       * backend/rust-compile-item.cc: Likewise.
+       * backend/rust-compile-pattern.cc: Likewise.
+       * backend/rust-compile-resolve-path.cc: Likewise.
+       * backend/rust-compile-type.cc: Likewise.
+       * backend/rust-compile-var-decl.h: Likewise.
+       * backend/rust-compile.cc: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.cc (Attribute::check_cfg_predicate): Change raw
+       string to constexpr call.
+       (Attribute::separate_cfg_attrs): Likewise.
+       * backend/rust-compile-base.cc (should_mangle_item): Likewise.
+       (HIRCompileBase::setup_fndecl): Likewise.
+       (HIRCompileBase::handle_cold_attribute_on_fndecl): Likewise.
+       * checks/errors/privacy/rust-privacy-reporter.cc (find_proc_macro_attribute):
+       Likewise.
+       * checks/errors/rust-unsafe-checker.cc (check_target_attr):
+       Likewise.
+       * expand/rust-cfg-strip.cc (fails_cfg): Likewise.
+       (fails_cfg_with_expand): Likewise.
+       (expand_cfg_attrs): Likewise.
+       * expand/rust-macro-builtins.cc: Likewise.
+       * hir/rust-ast-lower-base.cc (ASTLoweringBase::handle_outer_attributes): Likewise.
+       (ASTLoweringBase::lower_macro_definition): Likewise.
+       * hir/rust-hir-dump.cc (Dump::visit): Likewise.
+       * parse/rust-parse-impl.h (Parser::parse_doc_comment): Likewise.
+       * parse/rust-parse.cc (extract_module_path): Likewise.
+       * resolve/rust-early-name-resolver.cc (is_macro_use_module):
+       Likewise.
+       (EarlyNameResolver::visit): Likewise.
+       * resolve/rust-toplevel-name-resolver-2.0.cc (is_macro_export):
+       Likwise.
+       * rust-session-manager.cc (Session::injection): Likewise.
+       * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::parse_repr_options): Likewise.
+       * util/rust-attributes.cc (is_proc_macro_type): Likewise.
+       (AttributeChecker::check_attribute): Likewise.
+       (AttributeChecker::visit): Likewise.
+       * util/rust-hir-map.cc (Mappings::insert_macro_def): Likewise.
+       * util/rust-attribute-values.h: New file.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h
+       (Backend::Backend): New.
+       (Backend::~Backend): Remove.
+       (class Gcc_backend): Remove.
+       * rust-gcc.cc
+       (Gcc_backend::Gcc_backend): Rename to ...
+       (Backend::Backend): ... here.
+       (rust_get_backend): Construct Backend instead of Gcc_backend.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-proc-macro.cc (tokenstream_from_string): Change
+       linemap null pointer to the current linemap.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit):
+       Add proc macro definition insertion.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-hir-map.cc (Mappings::insert_derive_proc_macro_def):
+       Change the function body to fetch the node id from the macro
+       parameter.
+       (Mappings::insert_bang_proc_macro_def): Likewise.
+       (Mappings::insert_attribute_proc_macro_def): Likewise.
+       * util/rust-hir-map.h: Update the function's prototype by
+       removing the node id from the list of arguments.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * resolve/rust-early-name-resolver-2.0.cc (Early::visit_attributes):
+       Add proc macro handle retrieval for attribute and derive proc macros.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-hir-map.cc (Mappings::lookup_derive_proc_macro_def):
+       Update function to accomodate new signature.
+       (Mappings::lookup_bang_proc_macro_def): Likewise.
+       (Mappings::lookup_attribute_proc_macro_def): Likewise.
+       * util/rust-hir-map.h: Update function signatures.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-macro-expand.h (struct MacroExpander): Update
+       lookup function prototypes.
+       * util/rust-hir-map.cc (Mappings::lookup_derive_proc_macro_invocation):
+       Update lookup function according to new signature.
+       (Mappings::lookup_bang_proc_macro_invocation): Likewise.
+       (Mappings::lookup_attribute_proc_macro_invocation): Likewise.
+       * util/rust-hir-map.h: Update function prototypes.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h
+       (Backend::write_export_data): Remove.
+       * rust-gcc.cc
+       (Backend::write_export_data): Remove.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h
+       (Backend::real_part_expression): Make non-virtual.
+       (Backend::imag_part_expression): Likewise.
+       (Backend::complex_expression): Likewise.
+       (Backend::convert_expression): Likewise.
+       (Backend::struct_field_expression): Likewise.
+       (Backend::compound_expression): Likewise.
+       (Backend::conditional_expression): Likewise.
+       (Backend::negation_expression): Likewise.
+       (Backend::arithmetic_or_logical_expression): Likewise.
+       (Backend::arithmetic_or_logical_expression_checked): Likewise.
+       (Backend::comparison_expression): Likewise.
+       (Backend::lazy_boolean_expression): Likewise.
+       (Backend::constructor_expression): Likewise.
+       (Backend::array_constructor_expression): Likewise.
+       (Backend::array_initializer): Likewise.
+       (Backend::array_index_expression): Likewise.
+       (Backend::call_expression): Likewise.
+       (Gcc_backend::real_part_expression): Remove.
+       (Gcc_backend::imag_part_expression): Remove.
+       (Gcc_backend::complex_expression): Remove.
+       (Gcc_backend::convert_expression): Remove.
+       (Gcc_backend::struct_field_expression): Remove.
+       (Gcc_backend::compound_expression): Remove.
+       (Gcc_backend::conditional_expression): Remove.
+       (Gcc_backend::negation_expression): Remove.
+       (Gcc_backend::arithmetic_or_logical_expression): Remove.
+       (Gcc_backend::arithmetic_or_logical_expression_checked): Remove.
+       (Gcc_backend::comparison_expression): Remove.
+       (Gcc_backend::lazy_boolean_expression): Remove.
+       (Gcc_backend::constructor_expression): Remove.
+       (Gcc_backend::array_constructor_expression): Remove.
+       (Gcc_backend::array_initializer): Remove.
+       (Gcc_backend::array_index_expression): Remove.
+       (Gcc_backend::call_expression): Remove.
+       * rust-gcc.cc
+       (Gcc_backend::real_part_expression): Rename to ...
+       (Backend::real_part_expression): ... here.
+       (Gcc_backend::imag_part_expression): Rename to ...
+       (Backend::imag_part_expression): ... here.
+       (Gcc_backend::complex_expression): Rename to ...
+       (Backend::complex_expression): ... here.
+       (Gcc_backend::convert_expression): Rename to ...
+       (Backend::convert_expression): ... here.
+       (Gcc_backend::struct_field_expression): Rename to ...
+       (Backend::struct_field_expression): ... here.
+       (Gcc_backend::compound_expression): Rename to ...
+       (Backend::compound_expression): ... here.
+       (Gcc_backend::conditional_expression): Rename to ...
+       (Backend::conditional_expression): ... here.
+       (Gcc_backend::negation_expression): Rename to ...
+       (Backend::negation_expression): ... here.
+       (Gcc_backend::arithmetic_or_logical_expression): Rename to ...
+       (Backend::arithmetic_or_logical_expression): ... here.
+       (Gcc_backend::arithmetic_or_logical_expression_checked): Rename to ...
+       (Backend::arithmetic_or_logical_expression_checked): ... here.
+       (Gcc_backend::comparison_expression): Rename to ...
+       (Backend::comparison_expression): ... here.
+       (Gcc_backend::lazy_boolean_expression): Rename to ...
+       (Backend::lazy_boolean_expression): ... here.
+       (Gcc_backend::constructor_expression): Rename to ...
+       (Backend::constructor_expression): ... here.
+       (Gcc_backend::array_constructor_expression): Rename to ...
+       (Backend::array_constructor_expression): ... here.
+       (Gcc_backend::array_initializer): Rename to ...
+       (Backend::array_initializer): ... here.
+       (Gcc_backend::array_index_expression): Rename to ...
+       (Backend::array_index_expression): ... here.
+       (Gcc_backend::call_expression): Rename to ...
+       (Backend::call_expression): ... here.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust-session-manager.cc (Session::load_extern_crate): Change
+       variable name, add temporaries and comments.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-proc-macro.h: Change get_trait_name to get_name in
+       order to be coherent with the others proc macro type name
+       convention.
+       * resolve/rust-toplevel-name-resolver-2.0.cc (insert_macros):
+       Add a templated funtion that inserts a proc macro into the
+       context and emit an error on failure.
+       (TopLevel::visit): Change from manual insertion to a function
+       call.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit):
+       Change to assertion.
+       * util/rust-hir-map.cc (Mappings::lookup_derive_proc_macros):
+       Add empty line.
+       (Mappings::lookup_bang_proc_macros): Likewise.
+       (Mappings::lookup_attribute_proc_macros): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * metadata/rust-extern-crate.cc (ExternCrate::ExternCrate):
+       Update definition to allow Extern crate with no content (pure
+       proc macros).
+       (ExternCrate::ok): Panic on no content.
+       (ExternCrate::load): Likewise.
+       * metadata/rust-extern-crate.h: Update prototypes.
+       * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::go):
+       Remove macro resolution.
+       (TopLevel::visit): Likewise.
+       * resolve/rust-toplevel-name-resolver-2.0.h: Add visit prototype
+       for extern crate.
+       * rust-session-manager.cc (Session::load_extern_crate): Adapt
+       content depending on the loaded crate's content.
+       * util/rust-hir-map.cc (Mappings::lookup_derive_proc_macros):
+       Change return type to optional because it is way more
+       convenient.
+       (Mappings::lookup_bang_proc_macros): Likewise.
+       (Mappings::lookup_attribute_proc_macros): Likewise.
+       * util/rust-hir-map.h: Update function prototypes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * metadata/rust-imports.cc (Import::try_package_in_directory):
+       Remove error when some macro are found even if no import data is
+       available.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h (class BangProcMacro): Move class from here to
+       rust-proc-macro.h. Also remove related functions.
+       (class AttributeProcMacro): Likewise.
+       (class CustomDeriveProcMacro): Likewise.
+       (struct Crate): Remove proc macro vector members.
+       * expand/rust-macro-expand.h (struct MacroExpander): Change the
+       type to the newly created classes.
+       * expand/rust-proc-macro.cc (BangProcMacro::BangProcMacro): Add
+       constructor implementation.
+       (AttributeProcMacro::AttributeProcMacro): Likewise.
+       (CustomDeriveProcMacro::CustomDeriveProcMacro): Likewise.
+       * expand/rust-proc-macro.h (class BangProcMacro): Move class to
+       here.
+       (class AttributeProcMacro): Likewise.
+       (class CustomDeriveProcMacro): Likewise.
+       * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::go):
+       Change top level visitor to check mappings instead
+       * rust-session-manager.cc (Session::load_extern_crate):
+       Add back macro collection to mappings.
+       * util/rust-hir-map.cc (Mappings::insert_derive_proc_macros):
+       Update getter signature with new types.
+       (Mappings::insert_bang_proc_macros): Likewise.
+       (Mappings::insert_attribute_proc_macros): Likewise.
+       (Mappings::lookup_derive_proc_macros): Likewise.
+       (Mappings::lookup_bang_proc_macros): Likewise.
+       (Mappings::lookup_attribute_proc_macros): Likewise.
+       (Mappings::insert_derive_proc_macro_def): Likewise.
+       (Mappings::insert_bang_proc_macro_def): Likewise.
+       (Mappings::insert_attribute_proc_macro_def): Likewise.
+       (Mappings::lookup_derive_proc_macro_def): Likewise.
+       (Mappings::lookup_bang_proc_macro_def): Likewise.
+       (Mappings::lookup_attribute_proc_macro_def): Likewise.
+       (Mappings::insert_derive_proc_macro_invocation): Likewise.
+       (Mappings::lookup_derive_proc_macro_invocation): Likewise.
+       (Mappings::insert_bang_proc_macro_invocation): Likewise.
+       (Mappings::lookup_bang_proc_macro_invocation): Likewise.
+       (Mappings::insert_attribute_proc_macro_invocation): Likewise.
+       (Mappings::lookup_attribute_proc_macro_invocation): Likewise.
+       * util/rust-hir-map.h: Update function prototypes as well as map
+       types.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::go):
+       Visit crate's newly stored proc macros.
+       * rust-session-manager.cc (Session::load_extern_crate):
+       Store proc macros in the parsed crate instead of a local
+       variable to achieve mappings.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * resolve/rust-early-name-resolver-2.0.cc (Early::visit_attributes):
+       Change argument to reference.
+       * resolve/rust-early-name-resolver-2.0.h: Update function
+       prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h: Add getters.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h (struct Crate): Add proc macro members.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h (class BangProcMacro): Add new proc macro
+       abstraction.
+       (class AttributeProcMacro): Likewise.
+       (class CustomDeriveProcMacro): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * resolve/rust-early-name-resolver-2.0.cc (Early::visit_attributes):
+       Add function to handle attributes.
+       (Early::visit): Override visitor functions.
+       * resolve/rust-early-name-resolver-2.0.h: Add prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.cc (Attribute::get_traits_to_derive): Convert
+       tokenstream to path list.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.cc (Attribute::is_derive): Remove tokenstream
+       condition.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.cc (Attribute::get_traits_to_derive): Change
+       return type to a vector of references.
+       * ast/rust-ast.h: Update constructor.
+       * expand/rust-expand-visitor.cc (ExpandVisitor::expand_inner_stmts):
+       Update function call.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.cc (Attribute::get_traits_to_derive): Add
+       function as member function.
+       * ast/rust-ast.h: Add prototype.
+       * expand/rust-expand-visitor.cc (get_traits_to_derive): Remove
+       function.
+       (ExpandVisitor::expand_inner_stmts): Update function call.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.cc (Attribute::is_derive): Add member function.
+       * ast/rust-ast.h: Likewise.
+       * expand/rust-expand-visitor.cc (is_derive): Remove old
+       function.
+       (ExpandVisitor::expand_inner_stmts): Update function call.
+       (ExpandVisitor::visit_inner_using_attrs): Likewise.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-expr.cc (CompileExpr::visit): use a temp for the value
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h
+       (Backend::block): Make non-virtual.
+       (Backend::block_add_statements): Likewise.
+       (Gcc_backend::block): Remove.
+       (Gcc_backend::block_add_statements): Remove.
+       * rust-gcc.cc
+       (Gcc_backend::block): Rename to ...
+       (Backend::block): ... here.
+       (Gcc_backend::block_add_statements): Rename to ...
+       (Backend::block_add_statements): ... here.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-macro-expand.h: Change include directive with the
+       new name.
+       * expand/rust-proc-macro.h (RUST_PROC_MACRO_H): Likewise.
+       * util/rust-hir-map.h: Likewise.
+       * util/rust-token-converter.h: Likewise.
+       * util/rust-token-converter.cc: Remove useless include
+       directive.
+       * Make-lang.in: Rename library.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h
+       (Backend::init_statement): Make non-virtual.
+       (Backend::assignment_statement): Likewise.
+       (Backend::return_statement): Likewise.
+       (Backend::if_statement): Likewise.
+       (Backend::loop_expression): Likewise.
+       (Backend::exit_expression): Likewise.
+       (Backend::compound_statement): Likewise.
+       (Backend::statement_list): Likewise.
+       (Backend::exception_handler_statement): Likewise.
+       (Gcc_backend::init_statement): Remove.
+       (Gcc_backend::assignment_statement): Remove.
+       (Gcc_backend::return_statement): Remove.
+       (Gcc_backend::if_statement): Remove.
+       (Gcc_backend::compound_statement): Remove.
+       (Gcc_backend::statement_list): Remove.
+       (Gcc_backend::exception_handler_statement): Remove.
+       (Gcc_backend::loop_expression): Remove.
+       (Gcc_backend::exit_expression): Remove.
+       * rust-gcc.cc
+       (Gcc_backend::init_statement): Rename to ...
+       (Backend::init_statement): ... here.
+       (Gcc_backend::assignment_statement): Rename to ...
+       (Backend::assignment_statement): ... here.
+       (Gcc_backend::return_statement): Rename to ...
+       (Backend::return_statement): ... here.
+       (Gcc_backend::exception_handler_statement): Rename to ...
+       (Backend::exception_handler_statement): ... here.
+       (Gcc_backend::if_statement): Rename to ...
+       (Backend::if_statement): ... here.
+       (Gcc_backend::loop_expression): Rename to ...
+       (Backend::loop_expression): ... here.
+       (Gcc_backend::exit_expression): Rename to ...
+       (Backend::exit_expression): ... here.
+       (Gcc_backend::compound_statement): Rename to ...
+       (Backend::compound_statement): ... here.
+       (Gcc_backend::statement_list): Rename to ...
+       (Backend::statement_list): ... here.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h
+       (Backend::function): Make non-virtual.
+       (Backend::function_defer_statement): Likewise.
+       (Backend::function_set_parameters): Likewise.
+       (Backend::write_global_definitions): Likewise.
+       (Backend::write_export_data): Likewise.
+       (Gcc_backend::function): Remove.
+       (Gcc_backend::function_defer_statement): Remove.
+       (Gcc_backend::function_set_parameters): Remove.
+       (Gcc_backend::write_global_definitions): Remove.
+       (Gcc_backend::write_export_data): Remove.
+       * rust-gcc.cc
+       (Gcc_backend::function): Rename to ...
+       (Backend::function): ... here.
+       (Gcc_backend::function_defer_statement):
+       Fix a qualified lookup of Backend::label and rename to ...
+       (Backend::function_defer_statement): ... here.
+       (Gcc_backend::function_set_parameters) Rename to ...
+       (Backend::function_set_parameters): ... here.
+       (Gcc_backend::write_global_definitions): Rename to ...
+       (Backend::write_global_definitions): ... here.
+       (Gcc_backend::write_export_data): Rename to ...
+       (Backend::write_export_data): ... here.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-inherent-impl-overlap.h:
+       Added rich location and errorcode.
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
+       likewise.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
+       Added error code.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h
+       (Backend::zero_expression): Make non-virtual.
+       (Backend::var_expression): Likewise.
+       (Backend::integer_constant_expression): Likewise.
+       (Backend::float_constant_expression): Likewise.
+       (Backend::complex_constant_expression): Likewise.
+       (Backend::string_constant_expression): Likewise.
+       (Backend::char_constant_literal): Likewise.
+       (Backend::wchar_constant_literal): Likewise.
+       (Backend::boolean_constant_expression): Likewise.
+       (Gcc_backend::zero_expression): Remove.
+       (Gcc_backend::var_expression): Remove.
+       (Gcc_backend::integer_constant_expression): Remove.
+       (Gcc_backend::float_constant_expression): Remove.
+       (Gcc_backend::complex_constant_expression): Remove.
+       (Gcc_backend::string_constant_expression): Remove.
+       (Gcc_backend::wchar_constant_expression): Remove.
+       (Gcc_backend::char_constant_expression): Remove.
+       (Gcc_backend::boolean_constant_expression): Remove.
+       * rust-gcc.cc
+       (Gcc_backend::zero_expression): Rename to ...
+       (Backend::zero_expression): ... here.
+       (Gcc_backend::var_expression): Rename to ...
+       (Backend::var_expression): ... here.
+       (Gcc_backend::integer_constant_expression): Rename to ...
+       (Backend::integer_constant_expression): ... here.
+       (Gcc_backend::float_constant_expression): Rename to ...
+       (Backend::float_constant_expression): ... here.
+       (Gcc_backend::complex_constant_expression): Rename to ...
+       (Backend::complex_constant_expression): ... here.
+       (Gcc_backend::string_constant_expression): Rename to ...
+       (Backend::string_constant_expression): ... here.
+       (Gcc_backend::wchar_constant_expression): Rename to ...
+       (Backend::wchar_constant_expression): ... here.
+       (Gcc_backend::char_constant_expression): Rename to ...
+       (Backend::char_constant_expression): ... here.
+       (Gcc_backend::boolean_constant_expression): Rename to ...
+       (Backend::boolean_constant_expression): ... here.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h
+       (Backend::global_variable): Make non-virtual.
+       (Backend::global_variable_set_init): Likewise.
+       (Backend::local_variable): Likewise.
+       (Backend::parameter_variable): Likewise.
+       (Backend::static_chain_variable): Likewise.
+       (Backend::temporary_variable): Likewise.
+       (Gcc_backend::global_variable): Remove.
+       (Gcc_backend::global_variable_set_init): Remove.
+       (Gcc_backend::local_variable): Remove.
+       (Gcc_backend::parameter_variable): Remove.
+       (Gcc_backend::static_chain_variable): Remove.
+       (Gcc_backend::temporary_variable): Remove.
+       (Gcc_backend::non_zero_size_type): Move to ...
+       (Backend::non_zero_size_type): ... here.
+       (Gcc_backend::convert_tree): Move to ...
+       (Backend::convert_tree): ... here.
+       * rust-gcc.cc
+       (Gcc_backend::non_zero_size_type): Rename to ...
+       (Backend::non_zero_size_type): ... here.
+       (Gcc_backend::convert_tree): Rename to ...
+       (Backend::convert_tree): ... here.
+       (Gcc_backend::global_variable): Rename to ...
+       (Backend::global_variable): ... here.
+       (Gcc_backend::global_variable_set_init): Rename to ...
+       (Backend::global_variable_set_init): ... here.
+       (Gcc_backend::local_variable): Rename to ...
+       (Backend::local_variable): ... here.
+       (Gcc_backend::parameter_variable): Rename to ...
+       (Backend::parameter_variable): ... here.
+       (Gcc_backend::static_chain_variable): Rename to ...
+       (Backend::static_chain_variable): ... here.
+       (Gcc_backend::temporary_variable): Rename to ...
+       (Backend::temporary_variable): ... here.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * checks/errors/privacy/rust-privacy-reporter.cc
+       (PrivacyReporter::check_for_privacy_violation):
+       Added errorcode & richlocation.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h
+       (Backend::debug): Make non-virtual.
+       (Backend::get_identifier_node): Likewise.
+       (Gcc_backend::debug): Remove.
+       (Gcc_backend::get_identifier_node): Remove.
+       * rust-gcc.cc
+       (Gcc_backend::debug): Rename to ...
+       (Backend::debug): ... here.
+       (Gcc_backend::get_identifier_node): Rename to ...
+       (Backend::get_identifier_node): ... here.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc
+       (TypeCheckExpr::visit): Expect if conditions to have type bool.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h
+       (Backend::label): Make non-virtual.
+       (Backend::label_definition_statement): Likewise.
+       (Backend::goto_statement): Likewise.
+       (Backend::label_address): Likewise.
+       (Gcc_backend::label): Remove.
+       (Gcc_backend::label_definition_statement): Remove.
+       (Gcc_backend::goto_statement): Remove.
+       (Gcc_backend::label_address): Remove.
+       * rust-gcc.cc
+       (Gcc_backend::label): Rename to ...
+       (Backend::label): ... here.
+       (Gcc_backend::label_definition_statement): Rename to ...
+       (Backend::label_definition_statement): ... here.
+       (Gcc_backend::goto_statement): Rename to ...
+       (Backend::goto_statement): ... here.
+       (Gcc_backend::label_address): Rename to ...
+       (Backend::label_address): ... here.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-constexpr.cc
+       (struct constexpr_fundef): Rename to ...
+       (struct rust_constexpr_fundef): ... here.
+       (struct constexpr_call): Rename to ...
+       (struct rust_constexpr_call): ... here.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * lex/rust-input-source.h: Move constants from here...
+       * util/rust-codepoint.h (struct Codepoint): ... to here
+       * util/rust-attributes.cc (check_no_mangle_function): New function.
+       (AttributeChecker::visit): Use it.
+       * util/rust-unicode.cc (is_ascii_only): New function.
+       * util/rust-unicode.h (is_ascii_only): Likewise.
+       * backend/rust-mangle.cc (legacy_mangle_name): Use it.
+       * util/rust-punycode.cc (extract_basic_string): Likewise.
+       * lex/rust-lex.cc (Lexer::parse_byte_char): Likewise.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit):
+       Added richlocation & error code.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc
+       (TypeCheckExpr::resolve_fn_trait_call): Add TODO comment.
+       * typecheck/rust-tyty-bounds.cc
+       (TypeBoundPredicate::TypeBoundPredicate):
+       Add assertions, new error constructor.
+       (TypeBoundPredicate::error): Use new error constructor.
+       * typecheck/rust-tyty.h
+       (struct TypeBoundPredicate::mark_is_error): New.
+       (TypeBoundPredicate::TypeBoundPredicate):
+       Add new error constructor.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h:
+       (Backend::wchar_type): Make non-virtual.
+       (Backend::get_pointer_size): Likewise.
+       (Backend::raw_str_type): Likewise.
+       (Backend::integer_type): Likewise.
+       (Backend::float_type): Likewise.
+       (Backend::complex_type): Likewise.
+       (Backend::pointer_type): Likewise.
+       (Backend::reference_type): Likewise.
+       (Backend::immutable_type): Likewise.
+       (Backend::function_type): Likewise.
+       (Backend::function_type_varadic): Likewise.
+       (Backend::function_ptr_type): Likewise.
+       (Backend::struct_type): Likewise.
+       (Backend::union_type): Likewise.
+       (Backend::array_type): Likewise.
+       (Backend::named_type): Likewise.
+       (Backend::type_size): Likewise.
+       (Backend::type_alignment): Likewise.
+       (Backend::type_field_alignment): Likewise.
+       (Backend::type_field_offset): Likewise.
+       (Gcc_backend::wchar_type): Remove.
+       (Gcc_backend::get_pointer_size): Remove.
+       (Gcc_backend::raw_str_type): Remove.
+       (Gcc_backend::integer_type): Remove.
+       (Gcc_backend::float_type): Remove.
+       (Gcc_backend::complex_type): Remove.
+       (Gcc_backend::pointer_type): Remove.
+       (Gcc_backend::reference_type): Remove.
+       (Gcc_backend::immutable_type): Remove.
+       (Gcc_backend::function_type): Remove.
+       (Gcc_backend::function_type_varadic): Remove.
+       (Gcc_backend::function_ptr_type): Remove.
+       (Gcc_backend::struct_type): Remove.
+       (Gcc_backend::union_type): Remove.
+       (Gcc_backend::array_type): Remove.
+       (Gcc_backend::named_type): Remove.
+       (Gcc_backend::type_size): Remove.
+       (Gcc_backend::type_alignment): Remove.
+       (Gcc_backend::type_field_alignment): Remove.
+       (Gcc_backend::type_field_offset): Remove.
+       (Gcc_backend::fill_in_fields): Move to ...
+       (Backend::fill_in_fields): ... here.
+       (Gcc_backend::fill_in_array): Move to ...
+       (Backend::fill_in_array): ... here.
+       * rust-gcc.cc
+       (Gcc_backend::wchar_type): Rename to ...
+       (Backend::wchar_type): ... here.
+       (Gcc_backend::get_pointer_size): Rename to ...
+       (Backend::get_pointer_size): ... here.
+       (Gcc_backend::raw_str_type): Rename to ...
+       (Backend::raw_str_type): ... here.
+       (Gcc_backend::integer_type): Rename to ...
+       (Backend::integer_type): ... here.
+       (Gcc_backend::float_type): Rename to ...
+       (Backend::float_type): ... here.
+       (Gcc_backend::complex_type): Rename to ...
+       (Backend::complex_type): ... here.
+       (Gcc_backend::pointer_type): Rename to ...
+       (Backend::pointer_type): ... here.
+       (Gcc_backend::reference_type): Rename to ...
+       (Backend::reference_type): ... here.
+       (Gcc_backend::immutable_type): Rename to ...
+       (Backend::immutable_type): ... here.
+       (Gcc_backend::function_type): Rename to ...
+       (Backend::function_type): ... here.
+       (Gcc_backend::function_type_varadic): Rename to ...
+       (Backend::function_type_varadic): ... here.
+       (Gcc_backend::function_ptr_type): Rename to ...
+       (Backend::function_ptr_type): ... here.
+       (Gcc_backend::struct_type): Rename to ...
+       (Backend::struct_type): ... here.
+       (Gcc_backend::union_type): Rename to ...
+       (Backend::union_type): ... here.
+       (Gcc_backend::fill_in_fields): Rename to ...
+       (Backend::fill_in_fields): ... here.
+       (Gcc_backend::array_type): Rename to ...
+       (Backend::array_type): ... here.
+       (Gcc_backend::fill_in_array): Rename to ...
+       (Backend::fill_in_array): ... here.
+       (Gcc_backend::named_type): Rename to ...
+       (Backend::named_type): ... here.
+       (Gcc_backend::type_size): Rename to ...
+       (Backend::type_size): ... here.
+       (Gcc_backend::type_alignment): Rename to ...
+       (Backend::type_alignment): ... here.
+       (Gcc_backend::type_field_alignment): Rename to ...
+       (Backend::type_field_alignment): ... here.
+       (Gcc_backend::type_field_offset): Rename to ...
+       (Backend::type_field_offset): ... here.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-intrinsic.cc (move_val_init_handler): mark as side-effects
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-intrinsic.cc (uninit_handler): Update fndecl attributes
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-intrinsic.cc (op_with_overflow_inner): fix use before init
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-intrinsic.cc (enter_intrinsic_block): take the locals vector
+       (uninit_handler): make a temp variable and use the address of it
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * resolve/rust-early-name-resolver-2.0.cc (Early::visit):
+       Collect error instead of lambda.
+       * resolve/rust-early-name-resolver-2.0.h (std::function<void):
+       Remove type alias.
+       * rust-diagnostics.h: Change collection type.
+       * rust-session-manager.cc (Session::expansion): Change
+       collection container.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * resolve/rust-early-name-resolver-2.0.cc (Early::visit):
+       Collect error instead of emitting it. Also add invocation
+       registration.
+       * resolve/rust-early-name-resolver-2.0.h (std::function<void):
+       Add type definition for collection.
+       * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit):
+       Register macro rule definition in mappings.
+       * rust-session-manager.cc (Session::expansion): Add macro
+       resolve error collection.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * config-lang.in:
+       Add "backend/rust-tree.h" and "backend/rust-tree.h" to gtfiles.
+       * backend/rust-tree.cc: Include new header generated by gengtype.
+       * backend/rust-tree.h
+       (struct language_function): Add TODO.
+       * rust-lang.cc:
+       Include "rust-tree.h".
+       (struct lang_type): Remove duplicate definition.
+       (struct lang_decl): Likewise.
+       (struct lang_identifier): Likewise.
+       (struct language_function): Likewise.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
+       Added error code and rich location.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-tree.h
+       (struct rust_cp_class_binding): Fork from gcc/cp/name_lookup.h.
+       (struct rust_cp_binding_level): Likewise.
+       (struct named_label_entry): Remove declaration...
+       (struct rust_named_label_entry): ... and fork definition from gcc/cp/decl.cc.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust-diagnostics.cc (rust_be_error_at): Added overload function.
+       (rust_error_at): non-const `rich_location *` function.
+       * rust-diagnostics.h (rust_error_at): Implementation of overloaded
+       function.
+       (rust_be_error_at): likewise.
+       * rust_error_codes.def: Added GNU license.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-tyty.cc (BaseType::satisfies_bound):
+       Added errorcode and user-friendly error message.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-tree.cc
+       (resort_data): Fork from c++ frontend.
+       (resort_member_name_cmp): Likewise.
+       (resort_type_member_vec): Likewise.
+       * backend/rust-tree.h
+       (resort_type_member_vec): Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-tree.cc
+       (struct conv_type_hasher): Rename to ...
+       (struct rust_conv_type_hasher): ... here.
+       (struct cplus_array_hasher): Rename to ...
+       (struct rust_cplus_array_hasher): ... here.
+       (struct source_location_table_entry_hash): Rename to ...
+       (struct rust_source_location_table_entry_hash): ... here.
+       * backend/rust-tree.h
+       (struct named_decl_hash): Rename to ...
+       (struct rust_named_decl_hash): ... here.
+       (struct cxx_saved_binding): Rename to ...
+       (struct rust_cxx_saved_binding): ... here.
+       (struct named_label_hash): Rename to ...
+       (struct rust_named_label_hash): ... here.
+       (struct tree_pair_s): Rename to ...
+       (struct rust_tree_pair_s): ... here.
+       (struct tree_pair_p): Rename to ...
+       (struct rust_tree_pair_p): ... here.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-tree.cc
+       (Rust::gt_pch_nx): Move external function declaration ...
+       (gt_pch_nx): ... out of Rust namespace.
+       * backend/rust-tree.h
+       (OVL_FIRST): Qualify function name.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-type.cc (TyTyResolveCompile::visit): do a final lookup
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_generic_params):
+       Added more user friendly message.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-builtins.cc
+       (MacroBuiltin::include_str_handler): Use vector::data.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-type.cc:
+       Added last variant name, errorcode & rich location. for enum candidates.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-tree.h
+       (struct stmt_tree_s): Remove.
+       (typedef stmt_tree): Remove.
+       (c_language_function::x_stmt_tree): Remove.
+       (saved_scope::x_stmt_tree): Remove.
+       (lang_decl_fn::pending_inline_p): Remove.
+       (lang_decl_fn::spare): Adjust size.
+       (lang_decl_fn::pending_inline_info): Remove.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-constexpr.cc:
+       Include gt-rust-rust-constexpr.h.
+       (struct constexpr_call_hasher): Rename to ...
+       (struct rust_constexpr_call_hasher): ... here.
+       (struct constexpr_fundef_hasher): Rename to ...
+       (struct rust_constexpr_fundef_hasher): ... here.
+       * config-lang.in: Add rust-constexpr.cc to gtfiles.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * backend/rust-mangle.cc (v0_add_identifier): Added punycode encoding
+       (v0_mangle_item): Likewise.
+       * lex/rust-lex.cc (assert_source_content): Change type
+       (test_buffer_input_source): Change type
+       (test_file_input_source): Change type
+       * resolve/rust-ast-resolve-toplevel.h: fix typo
+       * rust-session-manager.cc (Session::load_extern_crate): fix typo
+       * util/rust-canonical-path.h: fix typo
+       * util/rust-hir-map.cc (NodeMapping::get_error): fix typo
+       (Mappings::Mappings): fix typo
+       * util/rust-mapping-common.h (UNKNOWN_CREATENUM): fix typo
+       (UNKNOWN_CRATENUM): Change 0 to UINT32_MAX
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait):
+       Updated errorcode & more userfriendly message.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit):
+       Added more helpful error message.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-path-probe.h:
+       Fixes issue & added rich location message.
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
+       Added rich location and error code.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lex/rust-lex.cc (Lexer::parse_decimal_int_or_float): Only
+       accept digits after a dot instead of accepting any float
+       member.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * ast/rust-pattern.h: No need of assertion, we are handling it.
+       * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
+       Added check which emits error instead of using assertion.
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
+       Added rich location and error code.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * backend/rust-compile-base.cc (HIRCompileBase::handle_inline_attribute_on_fndecl):
+       Added rich_location & error code.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_trait):
+       added errorcode & updated error message.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_outer_attribute):
+       Added errorcode & updated error function.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust-diagnostics.cc (va_constructor):
+       Added constructor for all possible cases.
+       (Error::Error): Updated error struct
+       for all possible cases.
+       * rust-diagnostics.h (struct Error):
+       Updated error struct to support error
+       code & rich location support.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * backend/rust-compile-base.cc (HIRCompileBase::handle_inline_attribute_on_fndecl):
+       Added rich_location & error code.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust-diagnostics.cc: Switch from new[] to xcalloc
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * util/make-rust-unicode.py: Add type annotation
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-intrinsic.cc (check_for_cached_intrinsic):
+       simplify this cached intrinsic check
+       * backend/rust-mangle.cc (legacy_mangle_item): use new interface
+       * typecheck/rust-tyty.h: new managle helper
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address):
+       use the single candidate
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * hir/rust-hir-dump.cc (Dump::visit): Remove useless if/else
+       already handled by visit_field.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * util/rust-punycode.cc: Add CHECKING_P guard.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * backend/rust-mangle.cc (legacy_mangle_name): Use Unicode escape
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): remove hack
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-proc-macro-invoc-lexer.cc
+       (ProcMacroInvocLexer::skip_token): Remove.
+       * expand/rust-proc-macro-invoc-lexer.h:
+       Include "rust-macro-invoc-lexer.h".
+       (class ProcMacroInvocLexer):
+       Extend MacroInvocLexerBase.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * lex/rust-codepoint.h: Moved to...
+       * util/rust-codepoint.h: ...here.
+       * lex/rust-input-source.h: Add missing license
+       * util/rust-unicode.cc: Add missing license
+       * util/rust-punycode.cc (extract_basic_string): Remove constant
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * expand/rust-macro-expand.h: Keep optional references for last_def
+       and last_invoc.
+       * expand/rust-macro-expand.cc (MacroExpander::expand_invoc): Store
+       optional references.
+       * rust-session-manager.cc (Session::expansion): Use tl::optional's APIs
+       for better checking.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * hir/rust-hir-dump.h (do_ifexpr): New.
+       * hir/rust-hir-dump.cc (Dump::do_ifexpr): New.
+       (Dump::visit): Use do_ifexpr and visit_field
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-casts.cc (TypeCastRules::emit_cast_error):
+       Refactored ErrorCodes & error messages.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * backend/rust-compile-base.cc:
+       Added ErrorCode.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_qualifiers):
+       called error function.
+       (ASTLoweringBase::lower_extern_block): likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-ast-collector.cc: Adjust formatting.
+       * checks/errors/rust-feature-gate.cc: Add trailing newline.
+       * rust-diagnostics.h: Remove old comment.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-gcc.cc
+       (Gcc_backend::struct_type): Remove references to "this".
+       (Gcc_backend::union_type): Likewise.
+       (Gcc_backend::array_type): Likewise.
+       (Gcc_backend::wchar_constant_expression): Likewise.
+       (Gcc_backend::convert_expression): Likewise.
+       (Gcc_backend::constructor_expression): Likewise.
+       (Gcc_backend::array_initializer): Likewise.
+       (Gcc_backend::assignment_statement): Likewise.
+       (Gcc_backend::global_variable): Likewise.
+       (Gcc_backend::temporary_variable): Likewise.
+       (Gcc_backend::function_defer_statement): Likewise.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * Make-lang.in: Add rust-punycode.o.
+       * rust-lang.cc (run_rust_tests): Add selftest.
+       * util/rust-punycode.cc: New file.
+       * util/rust-punycode.h: New file.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * backend/rust-compile.cc (HIRCompileBase::verify_array_capacities):
+       Added ErrorCode.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check.cc (TypeResolution::Resolve):
+       added errorcode.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h
+       (Backend::error_variable): Remove.
+       (Gcc_backend::error_variable): Move to ...
+       * rust-gcc.cc
+       (Bvariable::error_variable): ... here ...
+       * rust-gcc.h
+       (Bvariable::error_variable): ... and declare here.
+       (Gcc_backend::global_variable): Update error_variable call.
+       (Gcc_backend::local_variable): Likewise.
+       (Gcc_backend::parameter_variable): Likewise.
+       (Gcc_backend::static_chain_variable): Likewise.
+       (Gcc_backend::temporary_variable): Likewise.
+       * backend/rust-compile-extern.h
+       (CompileExternItem::visit): Likewise.
+       * backend/rust-compile-fnparam.cc
+       (CompileFnParam::CompileFnParam): Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-compile-type.cc
+       (TyTyResolveCompile::visit): Inline Backend::bool_type call.
+       * rust-backend.h
+       (Backend::bool_type): Remove.
+       (Backend::char_type): Remove.
+       (Gcc_backend::bool_type): Remove.
+       (Gcc_backend::char_type): Remove.
+       * rust-gcc.cc
+       (Gcc_backend::char_constant_expression): Inline Backend::char_type call.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * lex/rust-lex.cc (assert_source_content): Fix namespace specifier
+       (test_buffer_input_source): Likewise.
+       (test_file_input_source): Likewise.
+       * lex/rust-lex.h: Move InputSource ...
+       * lex/rust-input-source.h: ... to here. (New file)
+       * lex/rust-token.cc (nfc_normalize_token_string): New function
+       * lex/rust-token.h (nfc_normalize_token_string): New function
+       * rust-lang.cc (run_rust_tests): Modify order of selftests.
+       * rust-session-manager.cc (validate_crate_name): Modify interface of Utf8String.
+       * util/rust-unicode.cc (lookup_cc): Modify codepoint_t typedef.
+       (lookup_recomp): Likewise.
+       (recursive_decomp_cano): Likewise.
+       (decomp_cano): Likewise.
+       (sort_cano): Likewise.
+       (compose_hangul): Likewise.
+       (assert_normalize): Likewise.
+       (Utf8String::nfc_normalize): New function.
+       * util/rust-unicode.h: Modify interface of Utf8String.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go):
+       Added ErrorCode.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-common.h (enum_to_str): Remove extra semicolon after
+       the function.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * checks/errors/rust-const-checker.cc (ConstChecker::visit):
+       Use of mutable reference in constant functions.
+       * checks/errors/rust-feature-gate.cc (FeatureGate::gate):
+       ErrorCode for intrinsics are subject to change.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * checks/errors/rust-const-checker.cc (ConstChecker::check_function_call):
+       Added errorcode.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args):
+       Added errorcode.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): Declare
+       macros in the current rib if they are macros 2.0.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-macro.h: Add new method to `MacroRulesDefinition` to allow
+       getting the `MacroKind` contained.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust-session-manager.cc
+       (Session::expansion): Use new `Early` name resolution 2.0 pass
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * Make-lang.in: Add new object file.
+       * resolve/rust-early-name-resolver-2.0.cc: New file.
+       * resolve/rust-early-name-resolver-2.0.h: New file.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * resolve/rust-default-resolver.cc
+       (DefaultResolver::visit): Visit CallExpr and MethodCallExpr properly.
+       * resolve/rust-default-resolver.h: Switch "node" to plural in documentation.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * resolve/rust-toplevel-name-resolver-2.0.cc
+       (TopLevel::insert_or_error_out): Fix format string.
+       (is_macro_export): New method.
+       (TopLevel::visit): Handle macro definitions.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * resolve/rust-name-resolution-context.cc
+       (Resolver::insert): Do not call into `rust_unreachable` when resolving
+       macros anymore.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * resolve/rust-forever-stack.h
+       (insert_at_root): New method.
+       (resolve_path): New method.
+       (reverse_iter): Iterate on `Node`s instead of `Rib`s
+       * resolve/rust-forever-stack.hxx: Add path resolution.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * resolve/rust-rib.h: Add shadowing parameter. Make kind field public.
+       * resolve/rust-rib.cc (Rib::insert): Likewise.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit):
+       refactored message and called error function.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * checks/errors/rust-feature-gate.cc (FeatureGate::check):
+       errorcode support for unknown feature.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-unify.cc (UnifyRules::emit_type_mismatch):
+       refactored & called error function.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * expand/rust-macro-builtins.cc
+       (load_file_bytes): Return a tl::optional.
+       (MacroBuiltin::include_byte_handler): Adjust and check file was
+       correctly opened.
+       (MacroBuiltin::include_str_handler): Likewise.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * resolve/rust-toplevel-name-resolver-2.0.h
+       (class TopLevel): Inherit from DefaultResolver
+       * resolve/rust-toplevel-name-resolver-2.0.cc
+       (TopLevel::TopLevel): Remove unecessary methods
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * Make-lang.in: Add new object file.
+       * resolve/rust-default-resolver.cc: New file.
+       * resolve/rust-default-resolver.h: New file.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * util/rust-unicode.cc (decomp_cano): Decompose Hangul.
+       (sort_cano): Fix bounds check.
+       (recomp): use `compose_hangul`.
+       (compose_hangul): Compose Hangul.
+       (rust_utf8_normalize_test): Add tests.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * resolve/rust-forever-stack.hxx: assert() -> rust_assert()
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * Make-lang.in: Add new object file.
+       * resolve/rust-toplevel-name-resolver-2.0.cc: New file.
+       * resolve/rust-toplevel-name-resolver-2.0.h: New file.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * Make-lang.in: Add new object file.
+       * resolve/rust-name-resolution-context.cc: New file.
+       * resolve/rust-name-resolution-context.h: New file.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
+       called error function.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-invoc-lexer.cc
+       (MacroInvocLexer::skip_token): Remove.
+       * expand/rust-macro-invoc-lexer.h
+       (class MacroInvocLexer): Extend MacroInvocLexerBase.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * ast/rust-ast-fragment.cc (Fragment::create_empty): New.
+       * ast/rust-ast-fragment.h (MacroTranscriberFunc): New.
+       * ast/rust-macro.h (MacroRulesDefinition): Use MacroTranscriberFunc.
+       * expand/rust-macro-builtins.cc
+       (MacroBuiltin::builtin_transcribers): likewise.
+       (MacroBuiltin::assert_handler): Return optional.
+       (MacroBuiltin::file_handler): Likewise.
+       (MacroBuiltin::column_handler): Likewise.
+       (MacroBuiltin::include_bytes_handler): Likewise.
+       (MacroBuiltin::include_str_handler): Likewise.
+       (MacroBuiltin::compile_error_handler): Likewise.
+       (MacroBuiltin::concat_handler): Likewise.
+       (MacroBuiltin::env_handler): Likewise.
+       (MacroBuiltin::cfg_handler): Likewise.
+       (MacroBuiltin::include_handler): Likewise.
+       (MacroBuiltin::line_handler): Likewise.
+       (MacroBuiltin::stringify_handler): Likewise.
+       (MacroBuiltin::sorry): Likewise.
+       * expand/rust-macro-builtins.h (builtin_transcribers): Use
+       MacroTranscriberFunc.
+       (assert_handler): Return optional.
+       (file_handler): Likewise.
+       (column_handler): Likewise.
+       (include_bytes_handler): Likewise.
+       (include_str_handler): Likewise.
+       (compile_error_handler): Likewise.
+       (concat_handler): Likewise.
+       (env_handler): Likewise.
+       (cfg_handler): Likewise.
+       (include_handler): Likewise.
+       (line_handler): Likewise.
+       (stringify_handler): Likewise.
+       (sorry): Likewise.
+       * expand/rust-macro-expand.cc (MacroExpander::expand_invoc):
+       Adjust to transcribers returning optional.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-trait-resolve.cc (TraitItemReference::resolve_item):
+       always resolve the type even when its an a mandatory trait item
+       * typecheck/rust-hir-type-check-type.cc (TypeCheckType::resolve_root_path):
+       Add check for enum candidates otherwise you get undefined behaviour
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * lex/rust-codepoint.h: Add comment
+       * lex/rust-lex.h: New method to get decoded characters
+       * rust-session-manager.cc (validate_crate_name): Modify unicode check
+       (rust_crate_name_validation_test): Add testcases
+       * util/rust-unicode.h (RUST_UNICODE_H): New class Utf8String.
+       (class Utf8String): New class.
+       * util/rust-unicode.cc (binary_search_sorted_array): Add comment.
+       (recursive_decomp_cano): Add comment.
+       (recomp): Remove dead code.
+       (dump_string): Removed.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * util/rust-unicode.cc: Add CHECKING_P guard.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
+       We need to check if a function context exists
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * expand/rust-proc-macro.cc (literal_from_string): update Lexer constructor
+       (tokenstream_from_string): likewise
+       * lex/rust-lex.cc (Lexer::Lexer): likewise
+       * lex/rust-lex.h: pass through Linemap
+       * parse/rust-cfg-parser.cc (parse_cfg_option): likewise
+       * rust-session-manager.cc (Session::load_extern_crate): likewise
+       * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait):
+       dont apply Sized on self
+       * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::get_marker_predicate): new
+       * typecheck/rust-hir-type-check-base.h: add prototype
+       * typecheck/rust-hir-type-check-type.cc (TypeResolveGenericParam::Resolve): apply Sized
+       (TypeResolveGenericParam::visit): likewise
+       * typecheck/rust-hir-type-check-type.h: update prototypes
+       * typecheck/rust-typecheck-context.cc: remove bad assertions
+       * typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::assemble_sized_builtin): cleanup
+       (TypeCheckBase::get_predicate_from_bound): apply sized rules properly
+       * util/rust-hir-map.cc (Mappings::lookup_trait_item_lang_item): helpers
+       (Mappings::get_lang_item): likewise
+       * util/rust-hir-map.h: likewise
+       * util/rust-token-converter.cc (from_ident): update lexer ctor
+       (from_punct): likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-path-probe.cc: track regular polarity
+       * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): likewise
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): likewise
+       * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): likewise
+       * typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound): likewise
+       (TypeBoundPredicate::TypeBoundPredicate): update ctor
+       (TypeBoundPredicate::operator=): update copy assignment ctor
+       (TypeBoundPredicate::error): update error node
+       * typecheck/rust-tyty.h: add polarity field to predicate
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): use new BoundPolarity enum
+       * hir/rust-ast-lower-type.cc (ASTLoweringTypeBounds::visit): likewise
+       * hir/rust-hir-dump.cc (BoundPolarityString): new helper
+       (Dump::visit): update hir dump
+       * hir/tree/rust-hir-item.h (class ImplBlock): likewise
+       * hir/tree/rust-hir-type.h (class TraitBound): likewise
+       * hir/tree/rust-hir.cc (TraitBound::as_string): fix as string
+       * util/rust-common.h (enum Polarity): add new anti bound
+       (enum BoundPolarity): likewise
+       * util/rust-hir-map.cc (Mappings::Mappings): update naming
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-backend.h: Include "rust-gcc.h".
+       (class Gcc_backend): Move to ...
+       * rust-gcc.cc (class Gcc_backend): ... here.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-item.cc: add is_error check
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * Make-lang.in: Add rust-unicode.o
+       * rust-lang.cc (run_rust_tests): Add test.
+       * rust-system.h: Include <array>
+       * util/make-rust-unicode.py: Generater of rust-unicode-data.h.
+       * util/rust-unicode-data.h: Auto-generated file.
+       * util/rust-unicode.cc: New file.
+       * util/rust-unicode.h: New file.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust-diagnostics.cc: Rework `make_description` and `make_url` functions.
+       * rust-diagnostics.h: Specify ErrorCode's underlying type,
+       remove error_codes_strings table.
+       * rust_error_codes.def: New file.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-location.h (typedef Location): Remove.
+       * expand/rust-proc-macro.cc
+       (register_callback): Replace Location constructor with UNDEF_LOCATION.
+       * ast/rust-ast-collector.h: Replace Location with location_t.
+       * checks/errors/privacy/rust-privacy-reporter.cc: Likewise.
+       * checks/errors/privacy/rust-privacy-reporter.h: Likewise.
+       * checks/errors/privacy/rust-pub-restricted-visitor.cc: Likewise.
+       * checks/errors/privacy/rust-pub-restricted-visitor.h: Likewise.
+       * checks/errors/rust-feature-gate.cc: Likewise.
+       * checks/errors/rust-feature-gate.h: Likewise.
+       * metadata/rust-imports.h: Likewise.
+       * resolve/rust-ast-resolve-path.h: Likewise.
+       * resolve/rust-name-resolver.h: Likewise.
+       * rust-backend.h: Likewise.
+       * rust-diagnostics.h: Likewise.
+       * rust-gcc.cc: Likewise.
+       * rust-linemap.h: Likewise.
+       * util/rust-attributes.cc: Likewise.
+       * util/rust-hir-map.cc: Likewise.
+       * util/rust-hir-map.h: Likewise.
+       * util/rust-token-converter.cc: Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * typecheck/rust-autoderef.cc: Replace Location with location_t.
+       * typecheck/rust-coercion.cc: Likewise.
+       * typecheck/rust-coercion.h: Likewise.
+       * typecheck/rust-hir-path-probe.h: Likewise.
+       * typecheck/rust-hir-trait-reference.cc: Likewise.
+       * typecheck/rust-hir-trait-resolve.cc: Likewise.
+       * typecheck/rust-hir-type-check-base.cc: Likewise.
+       * typecheck/rust-hir-type-check-expr.cc: Likewise.
+       * typecheck/rust-hir-type-check-expr.h: Likewise.
+       * typecheck/rust-hir-type-check-implitem.cc: Likewise.
+       * typecheck/rust-hir-type-check-item.cc: Likewise.
+       * typecheck/rust-hir-type-check-path.cc: Likewise.
+       * typecheck/rust-hir-type-check-pattern.cc: Likewise.
+       * typecheck/rust-hir-type-check-stmt.cc: Likewise.
+       * typecheck/rust-hir-type-check-struct.cc: Likewise.
+       * typecheck/rust-hir-type-check-type.cc: Likewise.
+       * typecheck/rust-hir-type-check-type.h: Likewise.
+       * typecheck/rust-type-util.cc: Likewise.
+       * typecheck/rust-type-util.h: Likewise.
+       * typecheck/rust-tyty-bounds.cc: Likewise.
+       * typecheck/rust-tyty-call.cc: Likewise.
+       * typecheck/rust-tyty-call.h: Likewise.
+       * typecheck/rust-tyty-cmp.h: Likewise.
+       * typecheck/rust-tyty-subst.cc: Likewise.
+       * typecheck/rust-tyty-subst.h: Likewise.
+       * typecheck/rust-tyty.cc: Likewise.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
+       refactored error message & called error function.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-proc-macro.cc (literal_from_string): Add callback
+       function.
+       (load_macros_array): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (handle_suffix): Rework function
+       to make it work with the new literal conversion function.
+       (convert_literal): Add a new function to convert to a proc macro
+       literal from a literal tokenptr. The function will abort if the
+       pointer does not point to a literal.
+       (convert): Add call to convert literal for every literal case.
+       * util/rust-token-converter.h (convert_literal): Add public
+       prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-proc-macro.cc: Remove static modifier and move to
+       an anonymous namespace.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * backend/rust-compile-intrinsic.cc (Intrinsics::compile):
+       Formatted according to enum class.
+       * checks/errors/rust-feature-gate.cc (FeatureGate::gate): likewise.
+       * checks/errors/rust-unsafe-checker.cc (check_unsafe_call): likewise.
+       * hir/rust-ast-lower-base.cc (struct_field_name_exists): likewise.
+       * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): likewise.
+       * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path):
+       likewise.
+       * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::go): likewise.
+       (PatternDeclaration::add_new_binding): likewise.
+       * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): likewise.
+       * resolve/rust-ast-verify-assignee.h: likewise.
+       * rust-diagnostics.cc: updated make_desc & url function for enum class.
+       * rust-diagnostics.h (struct ErrorCode): removed struct to switch to enum.
+       (enum class): Switched from errorcode struct to enum class.
+       (XSTR): Macro for converting enum to string.
+       (STR): macro Used by XSTR for converting to string.
+       (ERROR_CODE): macro used by map for check.
+       (TABLE_TO_MAP): macro used by map for check
+       * typecheck/rust-casts.cc (TypeCastRules::emit_cast_error):
+       Formatted according to enum class.
+       * typecheck/rust-hir-path-probe.h: likewise.
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): likewise.
+       * typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::visit):
+       likewise.
+       (TypeCheckImplItemWithTrait::visit): likewise.
+       * typecheck/rust-hir-type-check-item.cc: likewise.
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): likewise.
+       (emit_invalid_field_error): likewise.
+       * typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::resolve): likewise.
+       * typecheck/rust-tyty-call.cc (emit_unexpected_argument_error): likewise.
+       (TypeCheckCallExpr::visit): likewise.
+       * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args):
+       likewise.
+       * typecheck/rust-tyty.cc (BaseType::bounds_compatible): likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-attributes.cc (check_proc_macro_non_root): Add
+       function to emit this specific error.
+       (AttributeChecker::visit): Modify visitor to propagate to some
+       containers that were not handled correctly.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-compile-base.h: Replace Location with location_t.
+       * metadata/rust-imports.h: Likewise.
+       * resolve/rust-name-resolver.cc: Likewise.
+       * resolve/rust-name-resolver.h: Likewise.
+       * rust-backend.h: Likewise.
+       * rust-gcc.cc: Likewise.
+       * rust-gcc.h: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-proc-macro.cc (available): Remove function.
+       (load_macros_array): There was no need for an indirection here.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-proc-macro.cc (available): Add symbol
+       registration.
+       (load_macros_array): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-proc-macro.cc (load_macros_array): Symbol rename.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * checks/errors/privacy/rust-privacy-reporter.cc (find_proc_macro_attribute):
+       Refactor the function to be safer and more efficient.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * checks/errors/privacy/rust-privacy-reporter.cc (find_proc_macro_attribute):
+       Add a new function to find a potential proc macro type
+       attribute on a given item.
+       (proc_macro_privacy_check): Move all proc macro privacy check in
+       their own function to avoid cluttering the usual privacy check.
+       (PrivacyReporter::go): Add call to newly created proc macro
+       privacy check function.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::go):
+       Add visibility verification.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-attributes.cc (is_proc_macro_type): Add function to
+       identify matching proc macro attribute type.
+       (check_proc_macro_non_function): Add function to check and emit
+       error.
+       (AttributeChecker::visit): Add cal to new check function.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h: Remove NodeId from identifiers.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::visit):
+       Added check for error code support.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit):
+       called error function.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-compile-base.cc: Replace Location with location_t.
+       * backend/rust-compile-base.h: Likewise.
+       * backend/rust-compile-expr.cc: Likewise.
+       * lex/rust-token.h: Likewise.
+       * metadata/rust-import-archive.cc: Likewise.
+       * metadata/rust-imports.cc: Likewise.
+       * metadata/rust-imports.h: Likewise.
+       * rust-backend.h: Likewise.
+       * rust-diagnostics.cc: Likewise.
+       * rust-diagnostics.h: Likewise.
+       * rust-gcc.cc: Likewise.
+       * rust-linemap.cc: Likewise.
+       * util/rust-token-converter.cc: Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-ast-builder.h: Replace Location with location_t.
+       * ast/rust-ast.h: Likewise.
+       * ast/rust-expr.h: Likewise.
+       * ast/rust-item.h: Likewise.
+       * ast/rust-macro.h: Likewise.
+       * ast/rust-path.h: Likewise.
+       * hir/tree/rust-hir-expr.h: Likewise.
+       * hir/tree/rust-hir-item.h: Likewise.
+       * hir/tree/rust-hir-path.h: Likewise.
+       * hir/tree/rust-hir.h: Likewise.
+       * lex/rust-lex.cc: Likewise.
+       * lex/rust-lex.h: Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-derive-clone.cc: Replace Location with location_t.
+       * expand/rust-derive-clone.h: Likewise.
+       * expand/rust-derive-copy.cc: Likewise.
+       * expand/rust-derive-copy.h: Likewise.
+       * expand/rust-derive.cc: Likewise.
+       * expand/rust-derive.h: Likewise.
+       * expand/rust-macro-builtins.cc: Likewise.
+       * expand/rust-macro-builtins.h: Likewise.
+       * expand/rust-macro-expand.cc: Likewise.
+       * parse/rust-parse-impl.h: Likewise.
+       * parse/rust-parse.cc: Likewise.
+       * parse/rust-parse.h: Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * parse/rust-parse-impl.h
+       (Parser::parse_macro_match): Use token_id_is_keyword.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h (class Identifier): Remove interface
+       inheritance.
+       (class SimplePath): Likewise.
+       * expand/rust-expand-visitor.cc (get_traits_to_derive): Change
+       return type.
+       (derive_item): Update according to get_traits_to_derive return
+       type.
+       (expand_item_attribute): Likewise.
+       (ExpandVisitor::expand_inner_stmts): Likewise.
+       * expand/rust-macro-expand.h (struct MacroExpander): Likewise.
+       * util/rust-hir-map.cc (Mappings::insert_derive_proc_macro_invocation):
+       Change input type to SimplePath.
+       (Mappings::lookup_derive_proc_macro_invocation): Likewise.
+       (Mappings::insert_attribute_proc_macro_invocation): Likewise.
+       (Mappings::lookup_attribute_proc_macro_invocation): Likewise.
+       * util/rust-hir-map.h: Likewise with function prototypes.
+       * util/rust-proc-macro-invocation.h: Removed.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h: Add new constructor for SimplePath from an
+       identifier.
+       * expand/rust-expand-visitor.cc (get_traits_to_derive): Add
+       conversion.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-macro-expand.cc (MacroExpander::import_proc_macros):
+       Remove function.
+       * expand/rust-macro-expand.h (struct MacroExpander): Remove
+       import_proc_macro function.
+       * util/rust-hir-map.cc (Mappings::insert_derive_proc_macro_def):
+       Add a function to insert a derive proc macro definition.
+       (Mappings::insert_bang_proc_macro): Remove function.
+       (Mappings::insert_bang_proc_macro_def): Add function to insert a
+       bang proc macro definition.
+       (Mappings::insert_attribute_proc_macro_def): Likewise with
+       attribute proc macros.
+       (Mappings::lookup_derive_proc_macro_def): Add a function to
+       lookup a defined derive proc macro definition.
+       (Mappings::lookup_bang_proc_macro): Remove function.
+       (Mappings::lookup_bang_proc_macro_def): Add a function to lookup
+       a bang proc macro definition.
+       (Mappings::lookup_attribute_proc_macro_def): Add a function to
+       lookup an attribute prod macro definition.
+       (Mappings::insert_derive_proc_macro_invocation): Add a function
+       to insert a derive proc macro invocation.
+       (Mappings::lookup_derive_proc_macro_invocation): Add a function
+       to lookup a derive proc macro invocation.
+       (Mappings::insert_bang_proc_macro_invocation): Add a function to
+       insert a bang proc macro invocation.
+       (Mappings::lookup_bang_proc_macro_invocation): Add a function to
+       lookup a bang proc macro invocation.
+       (Mappings::insert_attribute_proc_macro_invocation): Add a
+       function to insert an attribute proc macro invocation.
+       (Mappings::lookup_attribute_proc_macro_invocation): Add a
+       function to lookup an attribute proc macro invocation.
+       * util/rust-hir-map.h: Add different proc macro mappings
+       and change function prototypes.
+       * expand/rust-expand-visitor.cc (get_traits_to_derive): Return a
+       vector of SimplePath instead.
+       (derive_item): Accept SimplePath instead of a string.
+       * ast/rust-ast.h: Add common ProcMacroInvocable interface to
+       Identifiers and SimplePath nodes.
+       * ast/rust-ast.cc: Add const modifier.
+       * ast/rust-macro.h: Change path and identifier getters.
+       * ast/rust-path.h: Change return type to reference.
+       * util/rust-proc-macro-invocation.h: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-attributes.h (RUST_ATTRIBUTES_H): Add missing header
+       guard.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h (class MetaItem): Add MetaItem dispatch values.
+       * ast/rust-expr.h: Add LitExpr and PathLit dispatch.
+       * ast/rust-macro.h: Add remaining dispatch getters.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * metadata/rust-extern-crate.h: Add proc macro getter.
+       * rust-session-manager.cc (Session::load_extern_crate): Collect
+       mappings and create mappings.
+       * util/rust-hir-map.cc: Add insertion and lookup functions for
+       every mapping.
+       * util/rust-hir-map.h: Add function prototypes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * metadata/rust-imports.cc (Import::try_package_in_directory):
+       Add call to load macros before loading metadatas.
+       * expand/rust-proc-macro.cc: Return empty vector instead of
+       panicking on error.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * metadata/rust-import-archive.cc (Stream_concatenate::do_peek):
+       Remove deletion.
+       (Stream_concatenate::do_advance): Likewise.
+       (Import::find_archive_export_data): Replace with a smart
+       pointer.
+       * metadata/rust-imports.cc (add_search_path): Change return type
+       to smart pointer.
+       (Import::open_package): Likewise.
+       (Import::try_package_in_directory): Likewise.
+       (Import::find_export_data): Likewise.
+       (Import::find_object_export_data): Likewise.
+       (Import::Import): Change constructor to accept unique_ptr.
+       * metadata/rust-imports.h: Change constructor prototype.
+       * rust-session-manager.cc (Session::load_extern_crate): Change
+       pointer to smart pointer.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * metadata/rust-extern-crate.cc (ExternCrate::ExternCrate):
+       Change constructor to accept procedural macro vector.
+       * metadata/rust-extern-crate.h: Add vector of procecural macro
+       in extern crate.
+       * rust-session-manager.cc (Session::load_extern_crate): Add
+       argument to new constructor call.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * metadata/rust-imports.cc (add_search_path): Change prototype,
+       now return a pair of Stream and procedural macro vector.
+       (Import::open_package): Likewise.
+       (Import::try_package_in_directory): Likewise.
+       * metadata/rust-imports.h: Likewise.
+       * rust-session-manager.cc (Session::load_extern_crate):
+       Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * metadata/rust-imports.h: Make the function to load a given
+       file public.
+       * rust-session-manager.cc (Session::load_extern_crate): Change
+       path resolution depending on extern crate declaration in cli
+       arguments.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-ast-collector.h
+       (TokenCollector::visit):
+       Replace default argument with UNDEF_LOCATION.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-compile-base.cc: Replace Location with location_t.
+       * backend/rust-compile-base.h: Likewise.
+       * backend/rust-compile-block.cc: Likewise.
+       * backend/rust-compile-expr.cc: Likewise.
+       * backend/rust-compile-expr.h: Likewise.
+       * backend/rust-compile-extern.h: Likewise.
+       * backend/rust-compile-implitem.h: Likewise.
+       * backend/rust-compile-intrinsic.cc: Likewise.
+       * backend/rust-compile-item.h: Likewise.
+       * backend/rust-compile-pattern.h: Likewise.
+       * backend/rust-compile-resolve-path.cc: Likewise.
+       * backend/rust-compile-stmt.cc: Likewise.
+       * backend/rust-compile-type.cc: Likewise.
+       * backend/rust-compile.cc: Likewise.
+       * backend/rust-constexpr.cc: Likewise.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
+       refactored and call error function.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-attributes.cc (AttributeChecker::visit): Add help
+       message.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-attributes.cc (AttributeChecker::visit): Add
+       attribute input check.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-attributes.cc (AttributeChecker::visit): Add
+       attribute check on functions.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (from_ident): Adapt code to new
+       constructor.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-proc-macro.cc (tokenstream_from_string): Add a
+       function that creates a tokenstream from a given string.
+       (load_macros_array): Add call to registration function.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lang.opt: Add option
+       * rust-session-manager.cc: Add option registration in session
+       target options.
+       * rust-session-manager.h (struct CompileOptions): Add new getter
+       for proc macros instead of a boolean.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * resolve/rust-forever-stack.h: New file.
+       * resolve/rust-forever-stack.hxx: New file.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * hir/rust-hir-dump.cc (convert_param_kind_to_str): New.
+       (convert_new_bind_type_to_str): New.
+       (convert_mut_to_str): New.
+       (Dump::go): New.
+       (Dump::put): New.
+       (Dump::begin): New.
+       (Dump::end): New.
+       (Dump::begin_field): New.
+       (Dump::end_field): New.
+       (Dump::put_field): New.
+       (Dump::visit_field): New.
+       (Dump::visit): Refactor.
+       (Dump::visit_collection): New.
+       (Dump::do_traititem): New.
+       (Dump::do_vis_item): New.
+       (Dump::do_functionparam): New.
+       (Dump::do_pathpattern): New.
+       (Dump::do_structexprstruct): New.
+       (Dump::do_expr): New.
+       (Dump::do_pathexpr): New.
+       (Dump::do_typepathsegment): New.
+       (Dump::do_typepathfunction): New.
+       (Dump::do_qualifiedpathtype): New.
+       (Dump::do_operatorexpr): New.
+       (Dump::do_mappings): New.
+       (Dump::do_inner_attrs): New.
+       (Dump::do_outer_attrs): New.
+       (Dump::do_baseloopexpr): New.
+       (Dump::do_ifletexpr): New.
+       (Dump::do_struct): New.
+       (Dump::do_enumitem): New.
+       (Dump::do_traitfunctiondecl): New.
+       (Dump::do_externalitem): New.
+       (Dump::do_namefunctionparam): New.
+       (Dump::do_stmt): New.
+       (Dump::do_type): New.
+       (Dump::do_item): New.
+       (Dump::do_tuplefield): New.
+       (Dump::do_structfield): New.
+       (Dump::do_genericargs): New.
+       (Dump::do_maybenamedparam): New.
+       * hir/rust-hir-dump.h: Refactor.
+       * hir/tree/rust-hir-item.h (enum_to_str): New.
+       * hir/tree/rust-hir-type.h (enum_to_str): New.
+       * hir/tree/rust-hir.cc (enum_to_str): New.
+       * util/rust-common.h (enum_to_str): New.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+           Matthew Jasper  <mjjasper1@gmail.com>
+
+       * Make-lang.in: Add `rust-rib.cc` object.
+       * resolve/rust-rib.cc: New file.
+       * resolve/rust-rib.h: New file.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-ast.h: Replace Location with location_t.
+       * ast/rust-expr.h: Likewise.
+       * ast/rust-item.h: Likewise.
+       * ast/rust-macro.h: Likewise.
+       * ast/rust-path.h: Likewise.
+       * ast/rust-pattern.h: Likewise.
+       * ast/rust-stmt.h: Likewise.
+       * ast/rust-type.h: Likewise.
+       * hir/rust-ast-lower-base.h: Likewise.
+       * hir/tree/rust-hir-expr.h: Likewise.
+       * hir/tree/rust-hir-item.h: Likewise.
+       * hir/tree/rust-hir-path.h: Likewise.
+       * hir/tree/rust-hir-pattern.h: Likewise.
+       * hir/tree/rust-hir-stmt.h: Likewise.
+       * hir/tree/rust-hir-type.h: Likewise.
+       * hir/tree/rust-hir.h: Likewise.
+       * lex/rust-token.h: Likewise.
+       * resolve/rust-ast-resolve-pattern.h: Likewise.
+       * typecheck/rust-hir-trait-reference.h: Likewise.
+       * typecheck/rust-tyty-bounds.h: Likewise.
+       * typecheck/rust-tyty-call.h: Likewise.
+       * typecheck/rust-tyty-subst.h: Likewise.
+       * typecheck/rust-tyty-util.h: Likewise.
+       * typecheck/rust-tyty.h: Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-ast-collector.cc: Replace Location with location_t.
+       * ast/rust-ast.cc: Likewise.
+       * ast/rust-ast.h: Likewise.
+       * ast/rust-expr.h: Likewise.
+       * ast/rust-item.h: Likewise.
+       * ast/rust-macro.h: Likewise.
+       * ast/rust-path.cc: Likewise.
+       * ast/rust-path.h: Likewise.
+       * ast/rust-pattern.h: Likewise.
+       * ast/rust-stmt.h: Likewise.
+       * ast/rust-type.h: Likewise.
+       * backend/rust-compile-base.cc: Likewise.
+       * backend/rust-compile-base.h: Likewise.
+       * backend/rust-compile-block.cc: Likewise.
+       * backend/rust-compile-expr.cc: Likewise.
+       * backend/rust-compile-expr.h: Likewise.
+       * backend/rust-compile-fnparam.cc: Likewise.
+       * backend/rust-compile-fnparam.h: Likewise.
+       * backend/rust-compile-intrinsic.cc: Likewise.
+       * backend/rust-compile-pattern.cc: Likewise.
+       * backend/rust-compile-resolve-path.h: Likewise.
+       * backend/rust-compile.cc: Likewise.
+       * checks/errors/rust-const-checker.cc: Likewise.
+       * checks/errors/rust-const-checker.h: Likewise.
+       * checks/errors/rust-unsafe-checker.cc: Likewise.
+       * checks/errors/rust-unsafe-checker.h: Likewise.
+       * expand/rust-macro-builtins.cc: Likewise.
+       * expand/rust-macro-expand.h: Likewise.
+       * hir/rust-ast-lower-base.h: Likewise.
+       * hir/rust-ast-lower-implitem.h: Likewise.
+       * hir/rust-ast-lower-item.cc: Likewise.
+       * hir/tree/rust-hir-expr.h: Likewise.
+       * hir/tree/rust-hir-item.h: Likewise.
+       * hir/tree/rust-hir-path.h: Likewise.
+       * hir/tree/rust-hir-pattern.h: Likewise.
+       * hir/tree/rust-hir-stmt.h: Likewise.
+       * hir/tree/rust-hir-type.h: Likewise.
+       * hir/tree/rust-hir.cc: Likewise.
+       * hir/tree/rust-hir.h: Likewise.
+       * lex/rust-token.h: Likewise.
+       * metadata/rust-extern-crate.cc: Likewise.
+       * metadata/rust-extern-crate.h: Likewise.
+       * parse/rust-parse-impl.h: Likewise.
+       * parse/rust-parse.h: Likewise.
+       * resolve/rust-ast-resolve-expr.cc: Likewise.
+       * resolve/rust-ast-resolve-implitem.h: Likewise.
+       * resolve/rust-ast-resolve-pattern.h: Likewise.
+       * resolve/rust-ast-resolve-stmt.h: Likewise.
+       * resolve/rust-ast-resolve-toplevel.h: Likewise.
+       * resolve/rust-ast-resolve-type.h: Likewise.
+       * resolve/rust-name-resolver.cc: Likewise.
+       * resolve/rust-name-resolver.h: Likewise.
+       * rust-diagnostics.cc: Likewise.
+       * rust-diagnostics.h: Likewise.
+       * rust-gcc.cc: Likewise.
+       * rust-session-manager.cc: Likewise.
+       * rust-session-manager.h: Likewise.
+       * typecheck/rust-casts.cc: Likewise.
+       * typecheck/rust-casts.h: Likewise.
+       * typecheck/rust-coercion.cc: Likewise.
+       * typecheck/rust-coercion.h: Likewise.
+       * typecheck/rust-hir-path-probe.cc: Likewise.
+       * typecheck/rust-hir-path-probe.h: Likewise.
+       * typecheck/rust-hir-trait-reference.cc: Likewise.
+       * typecheck/rust-hir-trait-reference.h: Likewise.
+       * typecheck/rust-hir-trait-resolve.cc: Likewise.
+       * typecheck/rust-hir-type-check-base.cc: Likewise.
+       * typecheck/rust-hir-type-check-base.h: Likewise.
+       * typecheck/rust-hir-type-check-item.cc: Likewise.
+       * typecheck/rust-hir-type-check-item.h: Likewise.
+       * typecheck/rust-hir-type-check-path.cc: Likewise.
+       * typecheck/rust-hir-type-check-pattern.cc: Likewise.
+       * typecheck/rust-hir-type-check-pattern.h: Likewise.
+       * typecheck/rust-hir-type-check-type.cc: Likewise.
+       * typecheck/rust-hir-type-check-type.h: Likewise.
+       * typecheck/rust-hir-type-check.cc: Likewise.
+       * typecheck/rust-hir-type-check.h: Likewise.
+       * typecheck/rust-substitution-mapper.cc: Likewise.
+       * typecheck/rust-substitution-mapper.h: Likewise.
+       * typecheck/rust-type-util.cc: Likewise.
+       * typecheck/rust-typecheck-context.cc: Likewise.
+       * typecheck/rust-tyty-bounds.cc: Likewise.
+       * typecheck/rust-tyty-call.h: Likewise.
+       * typecheck/rust-tyty-subst.cc: Likewise.
+       * typecheck/rust-tyty-subst.h: Likewise.
+       * typecheck/rust-tyty-util.cc: Likewise.
+       * typecheck/rust-tyty-util.h: Likewise.
+       * typecheck/rust-tyty.cc: Likewise.
+       * typecheck/rust-tyty.h: Likewise.
+       * typecheck/rust-unify.cc: Likewise.
+       * typecheck/rust-unify.h: Likewise.
+       * util/rust-hir-map.cc: Likewise.
+       * util/rust-hir-map.h: Likewise.
+       * util/rust-identifier.h: Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-gcc.cc
+       (Gcc_backend::debug): Move out of class declaration.
+       (Gcc_backend::get_identifier_node): Likewise.
+       (Gcc_backend::wchar_type): Likewise.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit):
+       called error function.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-linemap.h (Linemap::predeclared_location): Remove.
+       * backend/rust-compile-type.cc:
+       Replace Linemap::predeclared_location with BUILTINS_LOCATION.
+       * resolve/rust-name-resolver.cc: Likewise.
+       * typecheck/rust-hir-type-check-type.cc: Likewise.
+       * typecheck/rust-tyty.cc: Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-gcc.h: Add include guard.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust-system.h (rust_unreachable): Change definition to fancy_abort
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Use rust_unreachable
+       instead of gcc_unreachable.
+       (get_delimiters): Likewise.
+       * ast/rust-ast-dump.h: Likewise.
+       * ast/rust-ast-formatting.cc (get_string_in_delims): Likewise.
+       (get_mode_dump_desc): Likewise.
+       * ast/rust-ast.cc (Visibility::as_string): Likewise.
+       (UseTreeGlob::as_string): Likewise.
+       * ast/rust-ast.h: Likewise.
+       * ast/rust-macro.h: Likewise.
+       * ast/rust-path.h: Likewise.
+       * backend/rust-compile-expr.cc (sort_tuple_patterns): Likewise.
+       (CompileExpr::visit): Likewise.
+       (CompileExpr::generate_closure_fntype): Likewise.
+       * backend/rust-compile-intrinsic.cc (op_with_overflow_inner): Likewise.
+       * backend/rust-compile-pattern.cc (CompilePatternBindings::visit): Likewise.
+       (CompilePatternLet::visit): Likewise.
+       * backend/rust-constexpr.cc (base_field_constructor_elt): Likewise.
+       (eval_array_reference): Likewise.
+       (label_matches): Likewise.
+       (eval_store_expression): Likewise.
+       (eval_call_expression): Likewise.
+       (build_data_member_initialization): Likewise.
+       (array_index_cmp): Likewise.
+       (get_array_or_vector_nelts): Likewise.
+       (eval_bit_field_ref): Likewise.
+       (eval_loop_expr): Likewise.
+       (potential_constant_expression_1): Likewise.
+       * backend/rust-mangle.cc (v0_simple_type_prefix): Likewise.
+       (v0_type_prefix): Likewise.
+       (v0_mangle_item): Likewise.
+       (Mangler::mangle_item): Likewise.
+       * backend/rust-tree.cc (convert_to_void): Likewise.
+       (type_memfn_quals): Likewise.
+       (rs_tree_equal): Likewise.
+       (fold_offsetof): Likewise.
+       (fold_builtin_source_location): Likewise.
+       (lvalue_error): Likewise.
+       * backend/rust-tree.h (struct named_decl_hash): Likewise.
+       (struct named_label_hash): Likewise.
+       * checks/errors/privacy/rust-visibility-resolver.cc
+       (VisibilityResolver::resolve_visibility): Likewise.
+       (VisibilityResolver::visit): Likewise.
+       * checks/errors/rust-const-checker.cc (ConstChecker::ctx_to_str): Likewise.
+       * checks/errors/rust-feature.cc (Feature::create): Likewise.
+       * expand/rust-expand-visitor.cc (get_traits_to_derive): Likewise.
+       (derive_item): Likewise.
+       (expand_item_attribute): Likewise.
+       (expand_stmt_attribute): Likewise.
+       * expand/rust-macro-expand.cc (MacroExpander::match_matcher): Likewise.
+       (MacroExpander::match_repetition): Likewise.
+       (transcribe_context): Likewise.
+       (MacroExpander::import_proc_macros): Likewise.
+       (MacroExpander::parse_proc_macro_output): Likewise.
+       * expand/rust-macro-expand.h: Likewise.
+       * expand/rust-macro-invoc-lexer.h: Likewise.
+       * expand/rust-macro-substitute-ctx.cc (SubstituteCtx::substitute_token): Likewise.
+       * expand/rust-proc-macro-invoc-lexer.h: Likewise.
+       * expand/rust-proc-macro.cc (load_macros): Likewise.
+       * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_generic_args): Likewise.
+       (ASTLoweringBase::lower_literal): Likewise.
+       * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Likewise.
+       * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Likewise.
+       * hir/rust-ast-lower-type.cc (ASTLoweringType::visit): Likewise.
+       * hir/rust-hir-dump.cc (Dump::visit): Likewise.
+       * hir/tree/rust-hir.cc (get_string_in_delims): Likewise.
+       (Visibility::as_string): Likewise.
+       (UseTreeGlob::as_string): Likewise.
+       (CompoundAssignmentExpr::as_string): Likewise.
+       (ArithmeticOrLogicalExpr::as_string): Likewise.
+       * lex/rust-lex.cc (Lexer::parse_byte_string): Likewise.
+       (Lexer::parse_string): Likewise.
+       * lex/rust-token.cc (RS_TOKEN): Likewise.
+       * parse/rust-parse-impl.h (Parser::parse_simple_path_segment): Likewise.
+       (Parser::parse_path_ident_segment): Likewise.
+       (Parser::parse_attr_input): Likewise.
+       (Parser::parse_inherent_impl_item): Likewise.
+       (Parser::parse_trait_impl_item): Likewise.
+       (Parser::parse_type_path_segment): Likewise.
+       (Parser::parse_reference_type): Likewise.
+       (get_lbp_for_comparison_expr): Likewise.
+       * parse/rust-parse.cc (peculiar_fragment_match_compatible): Likewise.
+       * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): Likewise.
+       * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::visit): Likewise.
+       * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): Likewise.
+       (ResolveTypeToCanonicalPath::visit): Likewise.
+       (ResolveGenericArgs::resolve_disambiguated_generic): Likewise.
+       * rust-gcc.cc (operator_to_tree_code): Likewise.
+       (fetch_overflow_builtins): Likewise.
+       (Gcc_backend::non_zero_size_type): Likewise.
+       (Gcc_backend::convert_tree): Likewise.
+       * rust-lang.cc (grs_langhook_type_for_mode): Likewise.
+       (grs_langhook_global_bindings_p): Likewise.
+       (grs_langhook_pushdecl): Likewise.
+       (grs_langhook_getdecls): Likewise.
+       (convert): Likewise.
+       * typecheck/rust-autoderef.h: Likewise.
+       * typecheck/rust-hir-path-probe.cc: Likewise.
+       * typecheck/rust-hir-trait-reference.cc (TraitItemReference::get_tyty): Likewise.
+       * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::resolve_literal): Likewise.
+       * typecheck/rust-hir-type-check-expr.cc: Likewise.
+       * typecheck/rust-hir-type-check-expr.h: Likewise.
+       * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItem::visit): Likewise.
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise.
+       * typecheck/rust-hir-type-check-stmt.h: Likewise.
+       * typecheck/rust-hir-type-check.cc (TraitItemReference::get_type_from_fn): Likewise.
+       * typecheck/rust-substitution-mapper.h: Likewise.
+       * typecheck/rust-typecheck-context.cc (TypeCheckContextItem::get_context_type): Likewise.
+       * typecheck/rust-tyty-call.h: Likewise.
+       * typecheck/rust-tyty.cc (TypeKindFormat::to_string): Likewise.
+       (BaseType::monomorphized_clone): Likewise.
+       (VariantDef::variant_type_string): Likewise.
+       (ClosureType::handle_substitions): Likewise.
+       (IntType::as_string): Likewise.
+       (UintType::as_string): Likewise.
+       (FloatType::as_string): Likewise.
+       * typecheck/rust-unify.cc (UnifyRules::expect_projection): Likewise.
+       * util/rust-token-converter.cc (convert): Likewise.
+       (from_literal): Likewise.
+       (from_group): Likewise.
+       (from_tokentree): Likewise.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * checks/errors/rust-feature-gate.cc (FeatureGate::gate):
+       called error function.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * backend/rust-compile-intrinsic.cc (Intrinsics::compile):
+       called error function.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * checks/errors/rust-unsafe-checker.cc (check_unsafe_call):
+       called error function.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-location.h
+       (typedef RichLocation): Remove.
+       * expand/rust-macro-expand.cc: Replace RichLocation with rich_location.
+       * hir/rust-ast-lower-base.cc: Likewise.
+       * resolve/rust-ast-resolve-implitem.h: Likewise.
+       * resolve/rust-ast-resolve-stmt.h: Likewise.
+       * resolve/rust-ast-resolve-toplevel.h: Likewise.
+       * rust-diagnostics.cc: Likewise.
+       * rust-diagnostics.h: Likewise.
+       * rust-session-manager.cc: Likewise.
+       * typecheck/rust-casts.cc: Likewise.
+       * typecheck/rust-coercion.cc: Likewise.
+       * typecheck/rust-hir-inherent-impl-overlap.h: Likewise.
+       * typecheck/rust-hir-path-probe.h: Likewise.
+       * typecheck/rust-hir-trait-reference.cc: Likewise.
+       * typecheck/rust-hir-type-check-expr.cc: Likewise.
+       * typecheck/rust-hir-type-check-implitem.cc: Likewise.
+       * typecheck/rust-hir-type-check-item.cc: Likewise.
+       * typecheck/rust-hir-type-check-pattern.cc: Likewise.
+       * typecheck/rust-tyty-cmp.h: Likewise.
+       * typecheck/rust-tyty-subst.cc: Likewise.
+       * typecheck/rust-tyty.cc: Likewise.
+       * typecheck/rust-unify.cc: Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * lex/rust-lex.cc
+       (Lexer::start_line): Use linemap_line_start.
+       * rust-linemap.cc
+       (Linemap::start_line): Remove.
+       * rust-linemap.h
+       (Linemap::start_line): Remove.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-linemap.cc
+       (RichLocation::RichLocation): Remove.
+       (RichLocation::~RichLocation): Remove.
+       (RichLocation::add_range): Remove.
+       (RichLocation::add_fixit_insert_before): Remove.
+       (RichLocation::add_fixit_insert_after): Remove.
+       * rust-location.h
+       (class RichLocation): Remove.
+       * rust-diagnostics.cc
+       (rust_be_error_at): Remove RichLocation::get invocation.
+       * expand/rust-macro-expand.cc: Fix RichLocation constructor.
+       * hir/rust-ast-lower-base.cc: Likewise.
+       * resolve/rust-ast-resolve-implitem.h: Likewise.
+       * resolve/rust-ast-resolve-stmt.h: Likewise.
+       * resolve/rust-ast-resolve-toplevel.h: Likewise.
+       * rust-session-manager.cc: Likewise.
+       * typecheck/rust-casts.cc: Likewise.
+       * typecheck/rust-coercion.cc: Likewise.
+       * typecheck/rust-hir-inherent-impl-overlap.h: Likewise.
+       * typecheck/rust-hir-path-probe.h: Likewise.
+       * typecheck/rust-hir-trait-reference.cc: Likewise.
+       * typecheck/rust-hir-type-check-expr.cc: Likewise.
+       * typecheck/rust-hir-type-check-implitem.cc: Likewise.
+       * typecheck/rust-hir-type-check-item.cc: Likewise.
+       * typecheck/rust-hir-type-check-pattern.cc: Likewise.
+       * typecheck/rust-tyty-cmp.h: Likewise.
+       * typecheck/rust-tyty-subst.cc: Likewise.
+       * typecheck/rust-tyty.cc: Likewise.
+       * typecheck/rust-unify.cc: Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * lex/rust-lex.cc
+       (Lexer::get_current_location): Use linemap_position_for_column.
+       * rust-session-manager.cc
+       (Session::handle_crate_name): Likewise.
+       * rust-linemap.cc
+       (Linemap::get_location): Remove.
+       * rust-linemap.h
+       (Linemap::get_location): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lex/rust-token.cc (escape_special_chars): Add a function that
+       escape a given string.
+       (Token::as_string): Add call to escape function for string/char
+       representations.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * hir/tree/rust-hir-type.h (MaybeNamedParam::get_type): Remove
+       rust_assert.
+       (BareFunctionType::get_return_type): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * backend/rust-compile-intrinsic.cc (offset_handler): Remove
+       braces.
+       (sizeof_handler): Likewise.
+       (transmute_handler): Likewise.
+       (rotate_handler): Likewise.
+       (wrapping_op_handler_inner): Likewise.
+       (op_with_overflow_inner): Likewise.
+       (atomic_load_handler_inner): Likewise.
+       (unchecked_op_inner): Likewise.
+       (uninit_handler): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h: Add virtual destructor.
+       * expand/rust-macro-expand.h: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * hir/tree/rust-hir-full-decls.h (struct Crate): Change to
+       class.
+       (class Crate): Likewise.
+       (struct StructField): Likewise.
+       (class StructField): Likewise.
+       (struct TupleField): Likewise.
+       (class TupleField): Likewise.
+       (struct TraitFunctionDecl): Likewise.
+       (class TraitFunctionDecl): Likewise.
+       * rust-session-manager.h (struct Crate): Likewise.
+       (class Crate): Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-expr.h
+       (MetaItemPathLit::get_locus): Remove copy construction.
+       * backend/rust-constexpr.cc
+       (eval_constant_expression): Likewise.
+       (is_valid_constexpr_fn): Likewise.
+       * util/rust-token-converter.cc
+       (convert): Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * lex/rust-lex.cc
+       (Lexer::dump_and_skip): Use location_to_string.
+       * rust-linemap.cc
+       (Linemap::to_string): Move to...
+       (Linemap::location_to_string): ... here.
+       * rust-linemap.h
+       (Linemap::to_string): Remove.
+       (Linemap::location_to_string): Remove definition.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * hir/tree/rust-hir-expr.h (TypeCastExpr::get_casted_expr): Remove
+       assert in accessor.
+       (TypeCastExpr::get_type_to_convert_to): Likewise.
+       (CompoundAssignmentExpr::get_left_expr): Likewise.
+       (CompoundAssignmentExpr::get_right_expr): Likewise.
+       (GroupedExpr::get_expr_in_parens): Likewise.
+       (TupleIndexExpr::get_tuple_expr): Likewise.
+       (FieldAccessExpr::get_receiver_expr): Likewise.
+       (ClosureParam::get_pattern): Likewise.
+       (ClosureParam::get_type): Likewise.
+       (ExprType::get_return_type): Likewise.
+       (IfLetExpr::get_scrutinee_expr): Likewise.
+       (MatchArm::get_guard_expr): Likewise.
+       (MatchExpr::get_scrutinee_expr): Likewise.
+       * hir/tree/rust-hir-item.h (TypeParam::get_type): Likewise.
+       (SelfParam::get_type): Likewise.
+       (Function::get_return_type): Likewise.
+       (TypeAlias::get_type_aliased): Likewise.
+       (StructField::get_field_type): Likewise.
+       (TraitFunctionDecl::get_block_expr): Likewise.
+       (ImplBlock::get_trait_ref): Likewise.
+       * hir/tree/rust-hir-path.h (ConstGenericArg::get_expression): New.
+       (TypePathFunction::get_return_type): Remove assert in accessor.
+       (QualifiedPathType::get_trait): Likewise.
+       * hir/tree/rust-hir-pattern.h (PatternType::get_lower_bound): Likewise.
+       (PatternType::get_upper_bound): Likewise.
+       (ReferencePattern::get_referenced_pattern): Likewise.
+       * hir/tree/rust-hir.h (ConstGenericParam::get_default_expression): Likewise.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * hir/rust-ast-lower-base.cc (struct_field_name_exists):
+       called error function.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-diagnostics.cc
+       (rust_be_error_at): Add function accepting location_t and ErrorCode.
+       (rust_error_at): Likewise.
+       * rust-diagnostics.h
+       (rust_error_at): Likewise.
+       (rust_be_error_at): Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-linemap.cc
+       (class Gcc_linemap): Remove.
+       (Gcc_linemap::start_file): Move to...
+       (Linemap::start_file): ... here.
+       (Gcc_linemap::to_string): Move to...
+       (Linemap::to_string): ... here.
+       (Gcc_linemap::stop): Move to...
+       (Linemap::stop): ... here.
+       (Gcc_linemap::start_line): Move to...
+       (Linemap::start_line): ... here.
+       (Gcc_linemap::get_location): Move to...
+       (Linemap::get_location): ... here.
+       (rust_get_linemap): Use Linemap.
+       * rust-linemap.h
+       (Linemap::in_file_): New field from Gcc_linemap.
+       (Linemap::Linemap): Initialize in_file_.
+       (Linemap::~Linemap): Make non-virtual.
+       (Linemap::start_file): Likewise.
+       (Linemap::start_line): Likewise.
+       (Linemap::get_location): Likewise.
+       (Linemap::stop): Likewise.
+       (Linemap::to_string): Likewise.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * Make-lang.in: Remove rust-optional-test.cc's object file
+       * ast/rust-macro.h: Remove use of Rust::Optional
+       * backend/rust-compile-base.cc
+       (HIRCompileBase::resolve_method_address): Likewise.
+       * checks/errors/privacy/rust-privacy-reporter.cc
+       (PrivacyReporter::check_for_privacy_violation): Likewise.
+       (PrivacyReporter::visit): Likewise.
+       * checks/errors/privacy/rust-privacy-reporter.h: Likewise.
+       * checks/errors/rust-feature-gate.cc (FeatureGate::check): Likewise.
+       * checks/errors/rust-feature.cc (Feature::create): Likewise.
+       (Feature::as_name): Likewise.
+       * checks/errors/rust-feature.h: Likewise.
+       * expand/rust-macro-builtins.cc: Likewise.
+       * lex/rust-lex.cc (Lexer::Lexer): Likewise.
+       (Lexer::skip_token): Likewise.
+       (Lexer::dump_and_skip): Likewise.
+       * lex/rust-lex.h: Likewise.
+       * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): Likewise.
+       * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): Likewise.
+       * rust-lang.cc (run_rust_tests): Likewise.
+       * rust-session-manager.cc (Session::compile_crate): Likewise.
+       (TargetOptions::dump_target_options): Likewise.
+       * rust-session-manager.h (struct TargetOptions): Likewise.
+       * util/rust-hir-map.cc (Mappings::lookup_module_children): Likewise.
+       (Mappings::lookup_module_chidren_items): Likewise.
+       (Mappings::lookup_module_child): Likewise.
+       (Mappings::lookup_parent_module): Likewise.
+       * util/rust-hir-map.h (RUST_HIR_MAP_H): Likewise.
+       * util/rust-optional-test.cc: Removed.
+       * util/rust-optional.h: Removed.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-linemap.h (Linemap::unknown_location): Remove.
+       * ast/rust-ast.cc:
+       Replace Linemap::unknown_location with UNKNOWN_LOCATION.
+       * ast/rust-path.cc: Likewise.
+       * hir/tree/rust-hir.cc: Likewise.
+       * metadata/rust-imports.cc: Likewise.
+       * parse/rust-parse-impl.h: Likewise.
+       * parse/rust-parse.h: Likewise.
+       * rust-backend.h: Likewise.
+       * rust-diagnostics.cc: Likewise.
+       * rust-session-manager.cc: Likewise.
+       * typecheck/rust-tyty.cc: Likewise.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * resolve/rust-ast-verify-assignee.h: called error function.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-tyty-call.cc (emit_unexpected_argument_error):
+       Refactored invalid number of argument into one function.
+       (TypeCheckCallExpr::visit): called refactored function.
+       (TypeCheckMethodCallExpr::check): likewise.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * util/expected.h: Adapt class to GCC requirements.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * util/expected.h: New file.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * util/optional.h: Adapt for GCC.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * util/optional.h: New file.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-location.h (UNDEF_LOCATION): New.
+       * ast/rust-ast-collector.cc: Replace Location () with UNDEF_LOCATION.
+       * ast/rust-ast-fragment.cc: Likewise.
+       * ast/rust-ast.h: Likewise.
+       * ast/rust-expr.h: Likewise.
+       * ast/rust-item.h: Likewise.
+       * ast/rust-macro.h: Likewise.
+       * ast/rust-path.h: Likewise.
+       * ast/rust-type.h: Likewise.
+       * backend/rust-compile-expr.cc: Likewise.
+       * backend/rust-compile-extern.h: Likewise.
+       * backend/rust-compile-implitem.h: Likewise.
+       * backend/rust-compile-intrinsic.cc: Likewise.
+       * backend/rust-compile-item.h: Likewise.
+       * backend/rust-compile.cc: Likewise.
+       * backend/rust-constexpr.cc: Likewise.
+       * expand/rust-expand-visitor.cc: Likewise.
+       * expand/rust-macro-expand.cc: Likewise.
+       * expand/rust-macro-expand.h: Likewise.
+       * expand/rust-macro-invoc-lexer.cc: Likewise.
+       * expand/rust-proc-macro-invoc-lexer.cc: Likewise.
+       * expand/rust-proc-macro.cc: Likewise.
+       * hir/tree/rust-hir-expr.h: Likewise.
+       * hir/tree/rust-hir-item.h: Likewise.
+       * hir/tree/rust-hir-path.h: Likewise.
+       * hir/tree/rust-hir-type.h: Likewise.
+       * hir/tree/rust-hir.h: Likewise.
+       * lex/rust-lex.cc: Likewise.
+       * metadata/rust-export-metadata.cc: Likewise.
+       * parse/rust-parse-impl.h: Likewise.
+       * resolve/rust-ast-resolve-item.cc: Likewise.
+       * resolve/rust-ast-resolve.cc: Likewise.
+       * rust-diagnostics.h: Likewise.
+       * rust-session-manager.cc: Likewise.
+       * typecheck/rust-autoderef.cc: Likewise.
+       * typecheck/rust-coercion.cc: Likewise.
+       * typecheck/rust-hir-dot-operator.cc: Likewise.
+       * typecheck/rust-hir-path-probe.cc: Likewise.
+       * typecheck/rust-hir-trait-reference.cc: Likewise.
+       * typecheck/rust-hir-trait-reference.h: Likewise.
+       * typecheck/rust-hir-type-check-expr.cc: Likewise.
+       * typecheck/rust-hir-type-check-implitem.cc: Likewise.
+       * typecheck/rust-hir-type-check-type.cc: Likewise.
+       * typecheck/rust-hir-type-check.cc: Likewise.
+       * typecheck/rust-tyty-bounds.cc: Likewise.
+       * typecheck/rust-tyty-subst.cc: Likewise.
+       * typecheck/rust-tyty.cc: Likewise.
+       * util/rust-hir-map.cc: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Fix abit
+       output format.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Fix
+       external item trailing semicolon and outer attributes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Output
+       outer attributes on external functions.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Fix method
+       qualifier output.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Add where
+       clause.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Add outer
+       attributes to collector output.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Add
+       variadics in collector output.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Add
+       generics.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Fix generic
+       output.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Reformat
+       trait impl block.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Output
+       generic in inherent impl.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-dump.cc (Dump::require_spacing): Change dollar
+       spacing rule.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Change
+       formatting.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Fix trait
+       impl block output.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Fix binding
+       args.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Output
+       function qualifiers after visibility.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Fix self
+       param output.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-dump.cc (Dump::require_spacing): Add a rule to
+       remove spaces around dots and after references.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Fix several
+       token collection rules.
+       * ast/rust-ast-dump.cc (Dump::require_spacing): Add spacing rule
+       for comma.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-invoc-lexer.h
+       (class MacroInvocLexerBase): New.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-builtins.cc
+       (source_relative_path): Use LOCATION_FILE.
+       (MacroBuiltin::file_handler): Likewise.
+       (MacroBuiltin::column_handler): Use LOCATION_COLUMN.
+       (MacroBuiltin::line_handler): Use LOCATION_LINE.
+       * rust-linemap.cc
+       (Gcc_linemap::location_file): Remove.
+       (Gcc_linemap::location_line): Remove.
+       (Gcc_linemap::location_column): Remove.
+       * rust-linemap.h
+       (Linemap::location_file): Remove.
+       (Linemap::location_line): Remove.
+       (Linemap::location_column): Remove.
+       (Linemap::location_to_file): Remove.
+       (Linemap::location_to_line): Remove.
+       (Linemap::location_to_column): Remove.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit):
+       called error function and changed error message
+       similiar to rustc.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-linemap.cc
+       (Gcc_linemap::get_unknown_location): Remove.
+       (Gcc_linemap::get_predeclared_location): Remove.
+       (Gcc_linemap::is_predeclared): Remove.
+       (Gcc_linemap::is_unknown): Remove.
+       * rust-linemap.h
+       (Linemap::get_predeclared_location): Remove.
+       (Linemap::get_unknown_location): Remove.
+       (Linemap::is_predeclared): Remove.
+       (Linemap::is_unknown): Remove.
+       (Linemap::predeclared_location): Use BUILTINS_LOCATION.
+       (Linemap::unknown_location): Use UNKNOWN_LOCATION.
+       (Linemap::is_predeclared_location): Remove.
+       (Linemap::is_unknown_location): Remove.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit):
+       called error function
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::resolve):
+       called error function.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * lex/rust-lex.cc (Lexer::input_source_is_valid_utf8): New method of `Lexer`.
+       * lex/rust-lex.h: Likewise.
+       * rust-session-manager.cc (Session::compile_crate): Add error.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-expand.cc
+       (transcribe_expression): Skip trailing semicolon.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-item.cc: called error function.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * ast/rust-ast.h: Modify constructors of `Rust::Identifier`
+       * ast/rust-pattern.h: Likewise.
+       * hir/tree/rust-hir-item.h: Likewise.
+       * parse/rust-parse-impl.h (Parser::parse_macro_rules_def): Likewise.
+       (Parser::parse_decl_macro_def): Likewise.
+       (Parser::parse_macro_match_fragment): Likewise.
+       (Parser::parse_module): Likewise.
+       (Parser::parse_use_tree): Likewise.
+       (Parser::parse_function): Likewise.
+       (Parser::parse_type_param): Likewise.
+       (Parser::parse_type_alias): Likewise.
+       (Parser::parse_struct): Likewise.
+       (Parser::parse_struct_field): Likewise.
+       (Parser::parse_enum): Likewise.
+       (Parser::parse_enum_item): Likewise.
+       (Parser::parse_union): Likewise.
+       (Parser::parse_static_item): Likewise.
+       (Parser::parse_trait): Likewise.
+       (Parser::parse_trait_item): Likewise.
+       (Parser::parse_trait_type): Likewise.
+       (Parser::parse_trait_const): Likewise.
+       (Parser::parse_external_item): Likewise.
+       (Parser::parse_generic_args_binding): Likewise.
+       (Parser::parse_method): Likewise.
+       (Parser::parse_maybe_named_param): Likewise.
+       (Parser::parse_identifier_pattern): Likewise.
+       (Parser::parse_struct_expr_field): Likewise.
+       (ResolveItem::visit): Likewise.
+       * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItem::visit):Add comments
+       * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit): Likewise.
+       * checks/lints/rust-lint-scan-deadcode.h: Fix error location
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-compile-base.cc
+       (HIRCompileBase::address_expression): Remove gcc_location method call.
+       (HIRCompileBase::indirect_expression): Likewise.
+       (HIRCompileBase::compile_constant_item): Likewise.
+       (HIRCompileBase::named_constant_expression): Likewise.
+       * backend/rust-compile-expr.cc
+       (CompileExpr::visit): Remove gcc_location method call, use UNKNOWN_LOCATION to initialize.
+       (CompileExpr::get_fn_addr_from_dyn): Remove gcc_location method call.
+       (CompileExpr::type_cast_expression): Likewise.
+       * backend/rust-compile-intrinsic.cc
+       (transmute_handler): Replace "Location ().gcc_location ()" with UNKNOWN_LOCATION.
+       (copy_nonoverlapping_handler): Likewise.
+       (prefetch_data_handler): Likewise.
+       (atomic_store_handler_inner): Likewise.
+       (atomic_load_handler_inner): Likewise.
+       * resolve/rust-ast-resolve-expr.cc
+       (ResolveExpr::visit): Remove gcc_location method call.
+       * rust-diagnostics.cc
+       (rust_be_error_at): Likewise.
+       (rust_be_warning_at): Likewise.
+       (rust_be_fatal_error): Likewise.
+       (rust_be_inform): Likewise.
+       * rust-diagnostics.h
+       (rust_sorry_at): Likewise.
+       * rust-gcc.cc
+       (Bvariable::get_tree): Likewise.
+       (Gcc_backend::fill_in_fields): Likewise.
+       (Gcc_backend::named_type): Likewise.
+       (Gcc_backend::real_part_expression): Likewise.
+       (Gcc_backend::imag_part_expression): Likewise.
+       (Gcc_backend::complex_expression): Likewise.
+       (Gcc_backend::convert_expression): Likewise.
+       (Gcc_backend::struct_field_expression): Likewise.
+       (Gcc_backend::compound_expression): Likewise.
+       (Gcc_backend::conditional_expression): Likewise.
+       (Gcc_backend::negation_expression): Likewise.
+       (Gcc_backend::arithmetic_or_logical_expression): Likewise.
+       (Gcc_backend::arithmetic_or_logical_expression_checked): Likewise.
+       (Gcc_backend::comparison_expression): Likewise.
+       (Gcc_backend::lazy_boolean_expression): Likewise.
+       (Gcc_backend::constructor_expression): Likewise.
+       (Gcc_backend::array_constructor_expression): Likewise.
+       (Gcc_backend::array_initializer): Likewise.
+       (Gcc_backend::array_index_expression): Likewise.
+       (Gcc_backend::call_expression): Likewise.
+       (Gcc_backend::assignment_statement): Likewise.
+       (Gcc_backend::return_statement): Likewise.
+       (Gcc_backend::exception_handler_statement): Likewise.
+       (Gcc_backend::if_statement): Likewise.
+       (Gcc_backend::loop_expression): Likewise.
+       (Gcc_backend::exit_expression): Likewise.
+       (Gcc_backend::block): Likewise.
+       (Gcc_backend::convert_tree): Likewise.
+       (Gcc_backend::global_variable): Likewise.
+       (Gcc_backend::local_variable): Likewise.
+       (Gcc_backend::parameter_variable): Likewise.
+       (Gcc_backend::static_chain_variable): Likewise.
+       (Gcc_backend::temporary_variable): Likewise.
+       (Gcc_backend::label): Likewise.
+       (Gcc_backend::goto_statement): Likewise.
+       (Gcc_backend::label_address): Likewise.
+       (Gcc_backend::function): Likewise.
+       * rust-linemap.cc
+       (Gcc_linemap::to_string): Likewise.
+       (Gcc_linemap::location_file): Likewise.
+       (Gcc_linemap::location_line): Likewise.
+       (Gcc_linemap::location_column): Likewise.
+       (Gcc_linemap::is_predeclared): Likewise.
+       (Gcc_linemap::is_unknown): Likewise.
+       (RichLocation::RichLocation): Likewise.
+       (RichLocation::add_range): Likewise.
+       (RichLocation::add_fixit_insert_before): Likewise.
+       (RichLocation::add_fixit_insert_after): Likewise.
+       * rust-location.h
+       (class Location): Replace with typedef.
+       (operator<): Remove.
+       (operator==): Remove.
+       (operator+): Remove.
+       (operator-): Remove.
+       * typecheck/rust-hir-trait-resolve.cc
+       (AssociatedImplTrait::setup_associated_types): Initialize Location with UNKNOWN_LOCATION.
+       * typecheck/rust-hir-type-check-stmt.cc
+       (TypeCheckStmt::visit): Likewise.
+       * util/rust-token-converter.cc
+       (convert): Remove gcc_location method call.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * hir/tree/rust-hir-expr.h (BorrowExpr::is_double_borrow): New.
+       (ArrayElemsCopied::get_elem_to_copy)
+       (ArrayElemsCopied::get_num_copies_expr): Return unique_ptr.
+       (CallExpr::get_fnexpr): Likewise.
+       (ReturnExpr::get_expr): Likewise.
+       (StructExprStructFields::get_struct_base): New.
+       (MethodCallExpr::has_params): New.
+       (ClosureExpr::has_params): New.
+       (BlockExpr::get_inner_attrs): New.
+       (WhileLoopExpr::get_patterns): New.
+       (ForLoopExpr::get_pattern): New.
+       (IfLetExpr::get_if_block): Return ref to unique_ptr.
+       (IfLetExprConseqElse::get_else_block): Likewise.
+       (MatchExpr::get_inner_attrs): New.
+       * hir/tree/rust-hir-item.h (Module::get_module_name): New.
+       (ExternCrate::get_referenced_crate)
+       (ExternCrate::get_as_clause_name): New.
+       (UseTreeGlob::get_glob_type, UseTreeGlob::get_path): New.
+       (UseTreeList::get_path_type, UseTreeList::get_path)
+       (UseTreeList::get_trees): New.
+       (TraitItemKind::get_expr): Remove assert. unique_ptr can
+       be "empty". Must be checked in caller.
+       * hir/tree/rust-hir-pattern.h (IdentifierPattern::get_is_ref)
+       (IdentifierPattern::get_to_bind): New.
+       (RangePatternBoundType::get_has_minus): New.
+       (RangePattern::get_has_ellipsis_syntax): New.
+       (StructPatternField::get_outer_attrs): New.
+       (StructPatternFieldTuplePat::get_index)
+       (StructPatternFieldTuplePat::get_tuple_pattern): New.
+       (StructPatternFieldIdent::get_has_ref): New.
+       * hir/tree/rust-hir-stmt.h (LetStmt::get_outer_attrs): New.
+       (LetStmt::get_type)
+       (LetStmt::get_init_expr, LetStmt::get_pattern): Return unique_ptr.
+       (ExprStmt::get_expr): Likewise.
+       * hir/tree/rust-hir-type.h (TraitBound::get_for_lifetimes): New.
+       (TraitBound::get_in_params): New.
+       (TraitBound::get_opening_question_mark): New.
+       (ImplTraitType::get_type_param_bounds): New.
+       (TraitObjectType::get_has_dyn): New.
+       (TraitBound::get_type_in_parens): New.
+       (ImplTraitTypeOneBound::get_trait_bound): New.
+       (BareFunctionType::get_for_lifetimes)
+       (BareFunctionType::get_is_variadic)
+       (BareFunctionType::get_function_qualifiers): New.
+       * hir/tree/rust-hir.h (class Expr): Virtual inherit from FullVisitable.
+       (class Pattern): Likewise.
+       (ConstGenericParam::get_name): New.
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Adjust call.
+       (TypeCheckExpr::resolve_fn_trait_call): Likewise.
+       * backend/rust-compile-expr.cc (CompileExpr::visit): Adjust call.
+       (CompileExpr::array_copied_expr): Likewise.
+       (CompileExpr::generate_possible_fn_trait_call): Likewise.
+       * backend/rust-compile-stmt.cc (CompileStmt::visit): Likewise.
+       * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Likewise.
+       * checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
+       * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
+       * hir/rust-hir-dump.cc (Dump::visit): Likewise.
+       * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-path-probe.h: called error function
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args):
+       called error function
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * hir/tree/rust-hir-expr.h (class ArrayElems): Inherit from FullVisitable.
+       (class StructExprField): Likewise.
+       * hir/tree/rust-hir-item.h (class WhereClauseItem): Likewise.
+       (class UseTree): Likewise.
+       (UseTreeRebind::get_path, UseTreeRebind::get_identifier)
+       (UseTreeRebind::get_bind_type): New.
+       (UseDeclaration::get_use_tree): New.
+       (struct TraitFunctionDecl): Change struct to ...
+       (class TraitFunctionDecl): ... class.
+       (TraitFunctionDecl::get_where_clause): New.
+       (StructField::get_outer_attrs): New.
+       (struct TupleField): Change struct to ...
+       (class TupleField): ... class.
+       (TupleField::get_visibility, TupleField::get_outer_attrs): New.
+       * hir/tree/rust-hir-pattern.h (class TupleStructItems): Inherit
+       from FullVisitable.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * lex/rust-lex.cc (Lexer::build_token): Replace function call.
+       (Lexer::parse_string): Likewise.
+       (Lexer::parse_identifier_or_keyword): Likewise.
+       (Lexer::parse_raw_string): Likewise.
+       (Lexer::parse_char_or_lifetime): Likewise.
+       (Lexer::get_input_codepoint_length): Deleted.
+       (Lexer::peek_codepoint_input): Deleted.
+       (Lexer::skip_codepoint_input): Deleted.
+       * lex/rust-lex.h: Remove some methods and fields
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound): track output
+       * util/rust-hir-map.cc (Mappings::lookup_trait_item_lang_item): new helper
+       * util/rust-hir-map.h: add prototype for helper
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-expr.cc (CompileExpr::generate_possible_fn_trait_call): use fnexpr
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::resolve_fn_trait_call): likewise
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): called rust_error_at
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * hir/tree/rust-hir.h (struct Crate): Rename struct into ...
+       (class Crate): ... class, and add get_items.
+       * backend/rust-compile.cc (CompileCrate::go): Adapt to visibility change of items.
+       * checks/errors/privacy/rust-privacy-check.cc (Resolver::resolve): Likewise.
+       * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::go): Likewise.
+       * checks/errors/privacy/rust-pub-restricted-visitor.cc (PubRestrictedVisitor::go): Likewise.
+       * checks/errors/privacy/rust-visibility-resolver.cc (VisibilityResolver::go): Likewise.
+       * checks/errors/rust-const-checker.cc (ConstChecker::go): Likewise.
+       * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::go): Likewise.
+       * checks/lints/rust-lint-marklive.cc (FindEntryPoint::find): Likewise.
+       * checks/lints/rust-lint-scan-deadcode.h (ScanDeadCode::Scan): Likewise.
+       * metadata/rust-export-metadata.cc (PublicInterface::gather_export_data): Likewise.
+       * typecheck/rust-hir-type-check.cc (TypeResolution::Resolve): Likewise.
+       * hir/rust-hir-dump.cc (CompileCrate::go): Likewise.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * hir/tree/rust-hir-expr.h (AwaitExpr::get_awaited_expr): New.
+       (AsyncBlockExpr::get_has_move, AsyncBlockExpr::get_block_expr): New.
+       * hir/tree/rust-hir-item.h (Enum::get_where_clause): New.
+       (Trait::get_where_clause, Trait::is_unsafe): New.
+       (ExternalItem::get_visibility): New.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * hir/tree/rust-hir.h (class FullVisitable): New.
+       (class Stmt): Adjust with new class.
+       (class Expr): Likewise.
+       (class Pattern): Likewise.
+       (class Type): Likewise.
+       (class TypeParamBound): Likewise.
+       (class GenericParam): Likewise.
+       (class TraitItem): Likewise.
+       (class ImplItem): Likewise.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * hir/tree/rust-hir.h (class WithInnerAttrs): New.
+       (class Item): Adjust to new WithInnerAttrs class.
+       (struct Crate): Likewise.
+       * hir/rust-hir-dump.cc (Dump::go): Likewise.
+       (Dump::visit): Likewise.
+       * hir/tree/rust-hir-expr.h (class GroupedExpr): Likewise.
+       (class ArrayExpr): Likewise.
+       (class TupleExpr): Likewise.
+       (class StructExprStruct): Likewise.
+       (class BlockExpr): Likewise.
+       (class MatchExpr): Likewise.
+       * hir/tree/rust-hir-item.h (TypeParam::get_outer_attribute): New.
+       (class Module): Adjust to new  WithInnerAttrs class.
+       (struct StructField): change struct to...
+       (class StructField): ... a class.
+       (class ImplBlock): Adjust to new  WithInnerAttrs class.
+       (class ExternBlock): Likewise.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * hir/tree/rust-hir-type.h (ArrayType::get_element_type): Returns
+       unique_ptr.
+       * hir/tree/rust-hir-expr.h (ArithmeticOrLogicalExpr::get_lhs)
+       (ArithmeticOrLogicalExpr::get_rhs): Likewise.
+       (ComparisonExpr::get_lhs, ComparisonExpr::get_rhs): Likewise.
+       (LazyBooleanExpr::get_lhs, LazyBooleanExpr::get_rhs): Likewise.
+       (AssignmentExpr::get_lhs, AssignmentExpr::get_rhs): Likewise.
+       (ArrayExpr::get_internal_elements): Likewise.
+       (ArrayIndexExpr::get_index_expr, ArrayIndexExpr::get_array_expr):
+       Likewise.
+       (StructExprFieldWithVal::get_value): Likewise.
+       (IfExpr::get_if_condition, IfExpr::get_if_block): Likewise.
+       (ExprWithBlock::get_else_block): Likewise.
+       * hir/tree/rust-hir-item.h (FunctionParam::get_param_name)
+       (FunctionParam::get_type): Likewise.
+       (ConstantItem::get_type, ConstantItem::get_expr): Likewise.
+       (StaticItem::get_expr, StaticItem::get_type): Likewise.
+       * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit):
+       Adjust for previous change.
+       * backend/rust-compile-block.cc (CompileConditionalBlocks::visit):
+       Likewise.
+       * backend/rust-compile-expr.cc (CompileExpr::visit): Likewise.
+       * backend/rust-compile-item.cc (CompileItem::visit): Likewise.
+       * backend/rust-compile-struct-field-expr.cc
+       (CompileStructExprField::visit): Likewise.
+       * checks/errors/privacy/rust-privacy-reporter.cc
+       (PrivacyReporter::visit): Likewise.
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
+       Likewise.
+       * typecheck/rust-hir-type-check-implitem.cc
+       (TypeCheckImplItem::visit): Likewise.
+       * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit):
+       Likewise.
+       * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit):
+       Likewise.
+       * typecheck/rust-hir-type-check-struct.cc
+       (TypeCheckStructExpr::visit): Likewise.
+       * typecheck/rust-hir-type-check.cc
+       (TraitItemReference::get_type_from_fn): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-pattern.h: Change constructor to accept new parameter
+       instead of defaulting on string type.
+       * parse/rust-parse-impl.h (Parser::parse_literal_or_range_pattern):
+       Propagate type hint.
+       (Parser::parse_pattern_no_alt): Likewise.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * lex/rust-lex.cc (Lexer::parse_byte_char):add check for range of codepoint
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-pattern.cc (emit_invalid_field_error): Refactored Field
+       Error Function
+       (TypeCheckPattern::visit): called emit_invalid_field_error function
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-expand.cc
+       (MacroExpander::match_matcher): Remove append_fragment inside repetitions.
+       (MacroExpander::match_n_matches): Use sub_stack push/pop to handle repetitions.
+       (MatchedFragmentContainer::add_fragment): Add MatchedFragmentContainer accepting version.
+       * expand/rust-macro-expand.h
+       (MatchedFragmentContainer::add_fragment): Likewise.
+       (MatchedFragmentContainerRepetition::add_fragment): Likewise.
+       (SubstititionScope::append_fragment): Likewise.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-casts.cc (TypeCastRules::check): apply new argument
+       * typecheck/rust-coercion.cc (TypeCoercionRules::Coerce): track if this is a cast site
+       (TypeCoercionRules::TryCoerce): update ctor
+       (TypeCoercionRules::TypeCoercionRules): cleanup error handling
+       (TypeCoercionRules::do_coercion): likewise
+       (TypeCoercionRules::coerce_unsafe_ptr): only infer in try mode
+       (TypeCoercionRules::coerce_borrowed_pointer): cleanup
+       * typecheck/rust-coercion.h: update header
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-trait-reference.h: update prototype
+       * typecheck/rust-hir-trait-resolve.cc: add generic args as an out param
+       * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): use the generics
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Add comment
+       after tail expressions.
+       * ast/rust-ast-dump.cc (Dump::require_spacing): Check for
+       missing previous token.
+       * ast/rust-ast-dump.h: Output formatting characters.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::collect): Collect
+       CollectItems once done.
+       (TokenCollector::newline): Add newline formatting
+       implementation.
+       (TokenCollector::indentation): Add indentation implementation.
+       (TokenCollector::increment_indentation): Add indentation
+       increment.
+       (TokenCollector::comment): Add new comment formatting option.
+       * ast/rust-ast-collector.h: Update prototypes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::collect_tokens):
+       Filter tokens.
+       (TokenCollector::visit_items_joined_by_separator): Change store
+       call.
+       (TokenCollector::visit_as_line): Likewise.
+       (TokenCollector::visit_items_as_block): Likewise.
+       (TokenCollector::trailing_comma): Likewise.
+       (TokenCollector::visit): Likewise.
+       (TokenCollector::visit_closure_common): Likewise.
+       (TokenCollector::visit_function_common): Likewise.
+       * ast/rust-ast-collector.h (class CollectItem): Add class to
+       differentiate between formatting and raw data (tokens).
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::TokenCollector):
+       Remove constructor, changing it to an implicit default
+       constructor.
+       * ast/rust-ast-collector.h: Change from container reference to
+       direct container.
+       * ast/rust-ast-dump.h: Change call to constructor.
+       * expand/rust-macro-expand.h (struct MacroExpander): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-dump.cc (Dump::require_spacing): Add a function
+       to determine wether a space shall output.
+       * ast/rust-ast-dump.h: Add function prototype as well as
+       condition.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Add a visit
+       function for visitable abstract class so we can call a dump on
+       any visitable item.
+       * ast/rust-ast-collector.h: Add new visit function prototype.
+       * ast/rust-ast-dump.cc (Dump::go): Add call to process function.
+       (Dump::visit): Remove functions.
+       (Dump::visit_items_joined_by_separator): Likewise.
+       (Dump::visit_as_line): Likewise.
+       (Dump::visit_items_as_lines): Likewise.
+       (Dump::visit_items_as_block): Likewise.
+       (Dump::visit_function_common): Likewise.
+       (get_delimiters): Likewise.
+       (Dump::debug): Update with call to tokencollector.
+       * ast/rust-ast-dump.h (RUST_AST_DUMP_H): Move include
+       directives.
+       (class Dump): Remove multiple prototypes and add generic process
+       function.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Add
+       semicolon in extern blocks.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust-session-manager.cc (Session::enable_dump): Remove
+       tokenstream dump.
+       (Session::compile_crate): Likewise.
+       (Session::dump_tokenstream): Likewise.
+       * rust-session-manager.h (struct CompileOptions): Likewise.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * lex/rust-lex.cc (Lexer::build_token):add check for all kinds of whitespaces
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h: Add default constructors.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Change with
+       call to getter.
+       * ast/rust-ast.cc (Module::as_string): Likewise.
+       (StaticItem::as_string): Likewise.
+       (TupleStruct::as_string): Likewise.
+       (Method::as_string): Likewise.
+       (StructStruct::as_string): Likewise.
+       (UseTreeRebind::as_string): Likewise.
+       (Enum::as_string): Likewise.
+       (Trait::as_string): Likewise.
+       (Union::as_string): Likewise.
+       (Function::as_string): Likewise.
+       (TypeAlias::as_string): Likewise.
+       (MacroRulesDefinition::as_string): Likewise.
+       (FieldAccessExpr::as_string): Likewise.
+       (MacroMatchFragment::as_string): Likewise.
+       (TypeParam::as_string): Likewise.
+       (StructExprFieldIdentifierValue::as_string): Likewise.
+       (EnumItem::as_string): Likewise.
+       (StructField::as_string): Likewise.
+       (ExternalTypeItem::as_string): Likewise.
+       (ExternalStaticItem::as_string): Likewise.
+       (ExternalFunctionItem::as_string): Likewise.
+       (TraitFunctionDecl::as_string): Likewise.
+       (TraitMethodDecl::as_string): Likewise.
+       (TraitItemConst::as_string): Likewise.
+       (TraitItemType::as_string): Likewise.
+       (MaybeNamedParam::as_string): Likewise.
+       (MetaListPaths::as_string): Likewise.
+       (MetaListNameValueStr::as_string): Likewise.
+       (Module::process_file_path): Likewise.
+       (MetaListNameValueStr::check_cfg_predicate): Likewise.
+       (MetaListPaths::check_cfg_predicate): Likewise.
+       (MetaWord::check_cfg_predicate): Likewise.
+       (MetaNameValueStr::check_cfg_predicate): Likewise.
+       (MetaNameValueStr::to_attribute): Likewise.
+       (MetaWord::to_attribute): Likewise.
+       (MetaListPaths::to_attribute): Likewise.
+       (MetaListNameValueStr::to_attribute): Likewise.
+       (operator<<): Change Identifier class <<
+       operator overload for standard output stream.
+       * ast/rust-ast.h (class Identifier): Change typedef to proper
+       class definition.
+       (operator<<): Add prototype for operator overload.
+       (class Token): Change getter identifier.
+       (class MetaListNameValueStr): Likewise.
+       (class PathExpr): Likewise.
+       * ast/rust-expr.h: Likewise.
+       * ast/rust-item.h: Likewise.
+       * ast/rust-macro.h: Likewise.
+       * ast/rust-path.cc (GenericArg::disambiguate_to_type): Likewise.
+       (GenericArgsBinding::as_string): Likewise.
+       (ConstGenericParam::as_string): Likewise.
+       * ast/rust-path.h: Likewise.
+       * ast/rust-pattern.cc (IdentifierPattern::as_string): Likewise.
+       (StructPatternFieldIdentPat::as_string): Likewise.
+       (StructPatternFieldIdent::as_string): Likewise.
+       * ast/rust-type.h: Likewise.
+       * backend/rust-compile-base.cc: Likewise.
+       * backend/rust-compile-expr.cc (CompileExpr::visit): Likewise.
+       * backend/rust-compile-extern.h: Likewise.
+       * backend/rust-compile-fnparam.cc (CompileFnParam::visit):
+       Likewise.
+       * backend/rust-compile-implitem.cc (CompileTraitItem::visit):
+       Likewise.
+       * backend/rust-compile-item.cc (CompileItem::visit): Likewise.
+       * backend/rust-compile-pattern.cc (CompilePatternBindings::visit): Likewise.
+       * backend/rust-compile-struct-field-expr.cc (CompileStructExprField::visit):
+       Likewise.
+       * backend/rust-compile-var-decl.h: Likewise.
+       * backend/rust-compile.cc: Likewise.
+       * checks/errors/rust-unsafe-checker.cc (check_extern_call):
+       Likewise.
+       * checks/lints/rust-lint-marklive.cc (MarkLive::visit):
+       Likewise.
+       * checks/lints/rust-lint-scan-deadcode.h: Likewise.
+       * expand/rust-derive-clone.cc (DeriveClone::clone_fn): Likewise.
+       (DeriveClone::visit_tuple): Likewise.
+       (DeriveClone::visit_struct): Likewise.
+       (DeriveClone::visit_union): Likewise.
+       * expand/rust-derive-copy.cc (DeriveCopy::visit_struct):
+       Likewise.
+       (DeriveCopy::visit_tuple): Likewise.
+       (DeriveCopy::visit_enum): Likewise.
+       (DeriveCopy::visit_union): Likewise.
+       * expand/rust-macro-expand.cc (MacroExpander::match_matcher):
+       Likewise.
+       (MacroExpander::match_n_matches): Likewise.
+       (MacroExpander::match_repetition): Likewise.
+       (MacroExpander::match_repetition_skipped_metavars): Likewise.
+       * hir/rust-ast-lower-base.cc (struct_field_name_exists):
+       Likewise.
+       * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Likewise.
+       * hir/rust-ast-lower-type.cc (ASTLowerGenericParam::visit):
+       Likewise.
+       * hir/rust-hir-dump.cc (Dump::visit): Likewise.
+       * hir/tree/rust-hir-expr.h: Likewise.
+       * hir/tree/rust-hir-item.h: Likewise.
+       * hir/tree/rust-hir-path.h: Likewise.
+       * hir/tree/rust-hir-type.h: Likewise.
+       * hir/tree/rust-hir.cc (Module::as_string): Likewise.
+       (StaticItem::as_string): Likewise.
+       (TupleStruct::as_string): Likewise.
+       (ConstantItem::as_string): Likewise.
+       (StructStruct::as_string): Likewise.
+       (UseTreeRebind::as_string): Likewise.
+       (Enum::as_string): Likewise.
+       (Trait::as_string): Likewise.
+       (Union::as_string): Likewise.
+       (Function::as_string): Likewise.
+       (TypeAlias::as_string): Likewise.
+       (FieldAccessExpr::as_string): Likewise.
+       (TypeParam::as_string): Likewise.
+       (GenericArgsBinding::as_string): Likewise.
+       (StructPatternFieldIdent::as_string): Likewise.
+       (StructPatternFieldIdentPat::as_string): Likewise.
+       (IdentifierPattern::as_string): Likewise.
+       (StructExprFieldIdentifierValue::as_string): Likewise.
+       (EnumItem::as_string): Likewise.
+       (StructField::as_string): Likewise.
+       (ExternalStaticItem::as_string): Likewise.
+       (ExternalFunctionItem::as_string): Likewise.
+       (NamedFunctionParam::as_string): Likewise.
+       (TraitFunctionDecl::as_string): Likewise.
+       (TraitItemConst::as_string): Likewise.
+       (TraitItemType::as_string): Likewise.
+       (MaybeNamedParam::as_string): Likewise.
+       * hir/tree/rust-hir.h: Likewise.
+       * parse/rust-parse-impl.h (Parser::parse_macro_match_fragment):
+       Likewise.
+       (Parser::parse_module): Likewise.
+       (Parser::parse_use_tree): Likewise.
+       (Parser::parse_maybe_named_param): Likewise.
+       * resolve/rust-ast-resolve-implitem.h: Likewise.
+       * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit):
+       Likewise.
+       (ResolveItem::visit): Likewise.
+       (flatten_rebind): Likewise.
+       (ResolveExternItem::visit): Likewise.
+       (rust_flatten_rebind): Likewise.
+       (rust_flatten_rebind_nested): Likewise.
+       * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::go):
+       Likewise.
+       (PatternDeclaration::visit): Likewise.
+       (PatternDeclaration::add_new_binding): Likewise.
+       * resolve/rust-ast-resolve-stmt.h: Likewise.
+       * resolve/rust-ast-resolve-toplevel.h: Likewise.
+       * resolve/rust-ast-resolve-type.h: Likewise.
+       * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Likewise.
+       * typecheck/rust-autoderef.cc: Likewise.
+       * typecheck/rust-hir-dot-operator.cc (MethodResolver::select):
+       Likewise.
+       * typecheck/rust-hir-path-probe.cc (PathProbeType::visit):
+       Likewise.
+       * typecheck/rust-hir-trait-reference.cc (TraitReference::get_name): Likewise.
+       * typecheck/rust-hir-trait-resolve.cc (ResolveTraitItemToRef::visit): Likewise.
+       (TraitResolver::resolve_trait): Likewise.
+       (TraitItemReference::resolve_item): Likewise.
+       (AssociatedImplTrait::setup_raw_associated_types): Likewise.
+       * typecheck/rust-hir-type-check-enumitem.cc (TypeCheckEnumItem::visit): Likewise.
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
+       Likewise.
+       * typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::visit): Likewise.
+       (TypeCheckImplItem::visit): Likewise.
+       (TypeCheckImplItemWithTrait::visit): Likewise.
+       * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit):
+       Likewise.
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise.
+       * typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::visit): Likewise.
+       * typecheck/rust-hir-type-check-type.cc (TypeResolveGenericParam::visit): Likewise.
+       * typecheck/rust-hir-type-check.cc (TraitItemReference::get_type_from_fn): Likewise.
+       * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args): Likewise.
+       * util/rust-attributes.cc (check_doc_attribute): Likewise.
+       * util/rust-hir-map.cc (Mappings::insert_macro_def): Likewise.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * lex/rust-lex.cc (is_float_digit):Change types of param to `uint32_t`
+       (is_x_digit):Likewise
+       (is_octal_digit):Likewise
+       (is_bin_digit):Likewise
+       (check_valid_float_dot_end):Likewise
+       (is_whitespace):Likewise
+       (is_non_decimal_int_literal_separator):Likewise
+       (is_identifier_start):Likewise
+       (is_identifier_continue):Likewise
+       (Lexer::skip_broken_string_input):Likewise
+       (Lexer::build_token):Remove handling BOM
+       (Lexer::parse_in_type_suffix):Modify use of `current_char`
+       (Lexer::parse_in_decimal):Likewise
+       (Lexer::parse_escape):Likewise
+       (Lexer::parse_utf8_escape):Likewise
+       (Lexer::parse_partial_string_continue):Likewise
+       (Lexer::parse_partial_hex_escape):Likewise
+       (Lexer::parse_partial_unicode_escape):Likewise
+       (Lexer::parse_byte_char):Likewise
+       (Lexer::parse_byte_string):Likewise
+       (Lexer::parse_raw_byte_string):Likewise
+       (Lexer::parse_raw_identifier):Likewise
+       (Lexer::parse_non_decimal_int_literal):Likewise
+       (Lexer::parse_decimal_int_or_float):Likewise
+       (Lexer::peek_input):Change return type to `Codepoint`
+       (Lexer::get_input_codepoint_length):Change to return 1
+       (Lexer::peek_codepoint_input):Change to be wrapper of `peek_input`
+       (Lexer::skip_codepoint_input):Change to be wrapper of `skip_input`
+       (Lexer::test_get_input_codepoint_n_length):Deleted
+       (Lexer::split_current_token):Deleted
+       (Lexer::test_peek_codepoint_input):Deleted
+       (Lexer::start_line):Move backwards
+       (assert_source_content):New helper function for selftest
+       (test_buffer_input_source):New helper function for selftest
+       (test_file_input_source):Likewise
+       (rust_input_source_test):New test
+       * lex/rust-lex.h (rust_input_source_test):New test
+       * rust-lang.cc (run_rust_tests):Add selftest
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-expand.cc
+       (MacroExpander::match_repetition_skipped_metavars): New.
+       (MacroExpander::match_repetition): Use new method.
+       * expand/rust-macro-expand.h
+       (MacroExpander::match_repetition_skipped_metavars): New.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): called rust_error_at
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): called rust_error_at
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-expand.cc
+       (MacroExpander::match_token): Match token instead of token id.
+       * parse/rust-parse-impl.h
+       (Parser::skip_token): Add token-skipping variant.
+       (Parser::expect_token): Likewise.
+       * parse/rust-parse.h
+       (Parser::skip_token): Likewise.
+       (Parser::expect_token): Likewise.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * lang.opt: Add -frust-name-resolution-2.0 option
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-autoderef.cc (AutoderefCycle::cycle): add check for pointers
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-autoderef.cc: use new selection filter
+       * typecheck/rust-hir-dot-operator.cc (MethodResolver::Select): new slection Filter
+       * typecheck/rust-hir-dot-operator.h: New select prototype
+       * typecheck/rust-hir-type-check-expr.cc: call select
+       * typecheck/rust-type-util.cc (try_coercion): new helper
+       * typecheck/rust-type-util.h (try_coercion): helper prototype
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): passed "E0277"
+       * typecheck/rust-tyty.cc (BaseType::bounds_compatible): passed "E0277"
+
+2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
+
+       * expand/rust-expand-visitor.cc (ExpandVisitor::visit):
+       Expand expressions in more contexts.
+       * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
+       Visit enum variants.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.cc (BlockExpr::normalize_tail_expr): Refactor
+       code and warn about dangling reference.
+       * expand/rust-expand-visitor.cc (expand_stmt_attribute):
+       Document function and change argument names to make those
+       clearer.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.cc (ExpandVisitor::expand_inner_stmts):
+       Remove second argument.
+       (ExpandVisitor::visit): Remove argument from function call.
+       * expand/rust-expand-visitor.h: Update function prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Change
+       call to expand_inner_stmts.
+       (expand_tail_expr): Change argument name and try to expand the
+       last statement as a tail expression once all statements have
+       been expanded.
+       * expand/rust-expand-visitor.h: Change prototype to accept
+       parent class.
+       * ast/rust-expr.h: Add try_convert_last_stmt function prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-expr.h: Add a function to take tail expr as well
+       as a function to set a tail expression.
+       * expand/rust-expand-visitor.cc (expand_tail_expr): Add tail
+       expression expansion function.
+       (ExpandVisitor::visit): Add call to tail expr expansion in for
+       BlockExpr.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+           Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.cc : Change type from pointer to
+       reference and expand statements from statements.
+       * ast/rust-macro.h: Return macro kind.
+       * ast/rust-ast.h: Add Statement kind.
+       * ast/rust-item.h: Change module.
+       * ast/rust-stmt.h: Return kind.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-expand.cc
+       (MacroExpander::expand_decl_macro):
+       Use pointers/smart pointers to refer to MatchedFragmentContainer instances.
+       (MacroExpander::transcribe_rule): Likewise.
+       (MatchedFragmentContainer::get_single_fragment): New implementation.
+       (MatchedFragmentContainer::get_fragments): Likewise.
+       (MatchedFragmentContainer::add_fragment): Likewise.
+       (MatchedFragmentContainer::zero): Likewise.
+       (MatchedFragmentContainer::metavar): Likewise.
+       * expand/rust-macro-expand.h
+       (class MatchedFragmentContainer): Make abstract.
+       (class MatchedFragmentContainerMetaVar): New.
+       (class MatchedFragmentContainerRepetition): New.
+       (class SubstitutionScope):
+       Use pointers/smart pointers to refer to MatchedFragmentContainer instances.
+       (MacroExpander::transcribe_rule): Likewise.
+       * expand/rust-macro-substitute-ctx.cc
+       (SubstituteCtx::substitute_metavar): Likewise.
+       (SubstituteCtx::check_repetition_amount): Likewise.
+       (SubstituteCtx::substitute_repetition): Likewise.
+       * expand/rust-macro-substitute-ctx.h
+       (class SubstituteCtx): Likewise.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): called rust_error_at
+       * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): called rust_error_at
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::ResolveImplBlockSelfWithInference):
+       arguments mappings as an out parameter and apply them to the bounds
+       * typecheck/rust-hir-type-check-item.h: update the prototype
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments):
+       apply the arguments to the segment type
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments):
+       simplify lookup of the respective predicate
+       * typecheck/rust-tyty-subst.cc (SubstitutionArg::SubstitutionArg): track original parameter
+       (SubstitutionArg::operator=): update copy ctor
+       (SubstitutionArg::get_param_ty): use original param
+       (SubstitutionArg::as_string): update as_string
+       * typecheck/rust-tyty-subst.h: add new private field
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::ResolveImplBlockSelfWithInference):
+       New helper utility to infer non concrete types and handle the case where its not a
+       binding generic type (which inherits SubstitutionRef)
+       * typecheck/rust-hir-type-check-item.h: new helper prototype
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): use this helper
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-trait-resolve.cc: use lookup_predicate (DefID)
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): fix formatting
+
+2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
+
+       * ast/rust-ast.h (MacroInvocation::add_semicolon): New method.
+       (Expr::to_stmt): Remove method.
+       * ast/rust-macro.h (MacroInvocation::add_semicolon): Add override.
+       (MacroInvocation::to_stmt): Remove override.
+       * ast/rust-stmt.h: Remove use of Expr::to_stmt.
+       (ExprStmt::add_semicolon): Add override.
+       * expand/rust-macro-expand.h (struct MacroExpander):
+       Add EXPR/STMT and remove BLOCK from ContextType.
+       * expand/rust-expand-visitor.cc (ExpandVisitor::maybe_expand_expr): Use EXPR context.
+       (ExpandVisitor::expand_inner_stmts): Use STMT context.
+       (ExpandVisitor::visitor): Remove use of BLOCK context.
+       * expand/rust-macro-expand.cc (parse_many): Pass enum by value.
+       (transcribe_on_delimiter): Remove function.
+       (transcribe_context): Use EXPR/STMT contexts.
+       (MacroExpander::parse_proc_macro_output): Use EXPR/STMT contexts.
+       (transcribe_many_stmts): Parse statements with semicolons.
+       * parse/rust-parse-impl.h (Parser::parse_stmt):
+       Delegate macro parsing to parse_expr_stmt, check for ! after macro_rules.
+       (Parser::parse_let_stmt): Work around lack of NT tokens.
+       (Parser::parse_expr_stmt): Handle statements at end of macro expansions.
+       (Parser::parse_expr_stmt): Parse macro statements/expression statements
+       starting with a macro.
+       (Parser::parse_match_expr): Don't modify flag unnecessarily.
+       (Parser::parse_stmt_or_expr):
+       Parse macro statements/expression statements starting with a macro.
+       (Parser::parse_path_based_stmt_or_expr): Remove method.
+       (Parser::parse_macro_invocation_maybe_semi): Remove method.
+       (Parser::parse_expr): Move code into left_denotations.
+       (Parser::left_denotations): New method.
+       (Parser::null_denotation): Split out methods for cases with and without paths.
+       (Parser::null_denotation_path): New method.
+       (Parser::null_denotation_not_path): New method.
+       (Parser::parse_macro_invocation_partial): Don't check for semicolon here.
+       * parse/rust-parse.h: Update declarations.
+       (struct ParseRestrictions): Additional flag.
+
+2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
+
+       * ast/rust-ast.cc (BlockExpr::strip_tail_expr):
+       Don't normalize tail expression in this method.
+       (BlockExpr::normalize_tail_expr): New method that only does the normalization.
+       * ast/rust-expr.h: Declare new method.
+       * hir/rust-ast-lower-block.h: Normalize tail expressions on blocks before lowering.
+
+2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
+
+       * ast/rust-ast-dump.cc (Dump::visit): Print macro invocations.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * lex/rust-lex.cc (is_whitespace):add all lacked codepoints valid as whitespaces
+       (is_identifier_start):new function to check XID_Start and underscore
+       (is_identifier_continue):new function to check XID_Continue
+       (Lexer::build_token):tokenize Unicode identifiers
+       (Lexer::parse_partial_string_continue):add comments
+       (Lexer::parse_partial_unicode_escape):add comments
+       (Lexer::parse_raw_identifier):change to use `is_identifier_scontinue`
+       (Lexer::parse_identifier_or_keyword):change to use `is_identifier_continue`
+       (Lexer::parse_char_or_lifetime):change to use `is_identifier_start/continue`
+       (Lexer::skip_codepoint_input):do not attempt to skip input when bumping EOF
+       * lex/rust-lex.h:add `current_char32` field
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * lex/rust-lex.cc
+       (Lexer::classify_keyword): Check if iterator is valid before dereferencing.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-expand.cc
+       (MacroExpander::match_repetition): Remove redundant rust_error_at call.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-unify.cc (UnifyRules::go): dont check bounds on placeholders
+
+2024-01-16  tieway59  <tieway59@foxmail.com>
+
+       * typecheck/rust-tycheck-dump.h: Delete this file
+       * rust-session-manager.cc: Remove `Session::dump_type_resolution`
+       and `TYPE_RESOLUTION_DUMP`
+       * rust-session-manager.h: Likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address):
+       match the fntype to the candidate
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * expand/rust-derive.h: Store AstBuilder and location.
+       * expand/rust-derive.cc (DeriveVisitor::DeriveVisitor): Update constructor.
+       * expand/rust-derive-clone.h: Remove members now stored in `DeriveVisitor`.
+       * expand/rust-derive-copy.h: Likewise.
+       * expand/rust-derive-clone.cc (DeriveClone::DeriveClone): Update constructor.
+       * expand/rust-derive-copy.cc (DeriveCopy::DeriveCopy): Likewise.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-item.cc (CompileItem::visit): ensure assoicated types are setup
+       * typecheck/rust-hir-trait-reference.h: new interface for concrete impl block
+       * typecheck/rust-hir-trait-resolve.cc (AssociatedImplTrait::setup_raw_associated_types):
+       ensure we setup assoicated types for this impl block
+
+2024-01-16  Dave Evans  <dave@dmetwo.org>
+
+       * backend/rust-compile-expr.cc (check_match_scrutinee): Add REF type to rust_assert.
+       (CompileExpr::visit): Add REF type for scrutinee_kind in MatchExpr visitor.
+
+2024-01-16  TieWay59  <tieway59@foxmail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc: Remove obsolete error diagnostic
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit):
+       use new interface
+       * typecheck/rust-type-util.cc (types_compatable): implementation of new interface
+       * typecheck/rust-type-util.h (types_compatable): prototype
+       * typecheck/rust-unify.cc (UnifyRules::expect_placeholder):
+       It is allow for unification against placeholders
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.cc (derive_item): Add const
+       attribute to the trait name argument.
+       * expand/rust-macro-expand.h (struct MacroExpander): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.cc (get_traits_to_derive): Change
+       assertion to allow empty derive directives.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.cc (expand_attribute): Add function
+       to expand a given attribute on a given item.
+       * expand/rust-macro-expand.h (struct MacroExpander): Change
+       return type to ast fragment.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.cc (get_traits_to_derive): Change
+       the function to get traits in a given attribute instead of an
+       attribute vector.
+       (ExpandVisitor::expand_struct_fields): Remove call in visitor.
+       (ExpandVisitor::expand_function_params): Likewise.
+       (ExpandVisitor::expand_closure_params): Likewise.
+       (ExpandVisitor::visit): Likewise.
+       (ExpandVisitor::expand_outer_attribute): Remove function.
+       (ExpandVisitor::visit_outer_attrs): Remove function.
+       * expand/rust-expand-visitor.h: Remove function prototypes.
+       (ExpandVisitor::visit_outer_attrs): Remove function.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.h: Remove fragment collection fro
+       procedural macros.
+       * expand/rust-macro-expand.h (struct MacroExpander): Remove
+       procedural macro fragment from expander.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-fragment.cc (Fragment::Fragment): Remove
+       overwrite member in constructor.
+       (Fragment::operator=): Removal of overwrite member in copy.
+       (Fragment::should_overwrite): Remove overwrite getter.
+       * ast/rust-ast-fragment.h: Remove overwrite boolean member.
+       * expand/rust-expand-visitor.cc (derive_item): Add a function to
+       derive items using the expander for now.
+       (builtin_derive_item): Rename from derive_item to
+       builtin_derive_item.
+       (ExpandVisitor::visit): Remove visit to derive attributes.
+       (ExpandVisitor::expand_derive): Remove derive attribute visitor.
+       (ExpandVisitor::visit_attrs_with_derive): Likewise.
+       * expand/rust-expand-visitor.h: Update insertion of other kind
+       of proc macros. We no longer have an overwrite attribute in the
+       fragment.
+       * expand/rust-macro-expand.cc (MacroExpander::parse_procmacro_output):
+       Return the fragment instead of inserting it.
+       * expand/rust-macro-expand.h (struct MacroExpander): Return
+       fragment.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.h: Update enum name to match
+       definition.
+       * expand/rust-expand-visitor.cc (ExpandVisitor::expand_derive):
+       Add call to expander.
+       (ExpandVisitor::expand_outer_attribute):
+       Change call to macro expander.
+       (ExpandVisitor::expand_inner_attribute): Likewise.
+       * expand/rust-expand-visitor.h: Remove const attribute to match
+       visitor declaration. Attach result to the AST. Add condition for
+       item erasure.
+       * expand/rust-proc-macro.h: Add token collector and expansion
+       call. Add lexers and parsers for each proc macro type and uses
+       them to parse macro output.
+       * expand/rust-macro-expand.h (struct MacroExpander): Add
+       functions.
+       * expand/rust-proc-macro.cc (ProcMacroExpander::import_proc_macros):
+       Moved from here...
+       * expand/rust-macro-expand.cc (MacroExpander::import_proc_macros):
+       ... to here. Unify procedural macro parsing under one function.
+       Add a flag to determine whether it originate from a derive
+       macro.
+       (MacroExpander::parse_procmacro_output):
+       Parse macro output to statements. Store an error on parsing
+       failure.
+       * Make-lang.in: Add const_TokenPtr specific lexer.
+       * expand/rust-proc-macro-invoc-lexer.cc: New file.
+       * expand/rust-proc-macro-invoc-lexer.h: New file.
+       * rust-session-manager.cc (Session::expansion): Remove
+       ProcMacroExpander declaration.
+       * ast/rust-ast-fragment.cc (Fragment::Fragment): Add overwrite
+       flag.
+       (Fragment::should_overwrite): Add a getter to determine whether
+       the fragment shall overwrite it's parent or be appended after.
+       * ast/rust-ast-fragment.h: Add flag to declaration.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-hir-map.cc (Mappings::insert_bang_proc_macro):
+       Add a function to insert a new bang proc macro.
+       (Mappings::lookup_bang_proc_macro): Add a function to lookup a
+       bang procedural macro.
+       (Mappings::insert_derive_proc_macro): Add a function to insert a
+       derive procedural macro.
+       (Mappings::lookup_derive_proc_macro): Add a function to lookup a
+       derive procedural macro.
+       (Mappings::insert_attribute_proc_macro): Add a function to
+       insert an attribute procedural macro.
+       (Mappings::lookup_attribute_proc_macro): Add a function to
+       lookup an attribute procedural macro.
+       * util/rust-hir-map.h: Add function prototypes.
+       * expand/rust-expand-visitor.cc (ExpandVisitor::expand_outer_attribute):
+       Implement expansion of outer attributes.
+       (ExpandVisitor::expand_inner_attribute):
+       Add call for inner attribute expansion.
+       * expand/rust-expand-visitor.h:
+       Add new procedural macro expander attribute.
+       * expand/rust-proc-macro.cc (load_macros_array): Add a function
+       to load the proc macro array from a given shared object.
+       (load_macros): Add a function to retrieve procedural macro
+       vector from a given shared object.
+       (ProcMacroExpander::import_proc_macros): Add a function to load
+       procedural macros from a given extern crate name.
+       * expand/rust-proc-macro.h (RUST_PROC_MACRO_H): Add new
+       proc-macro file.
+       (class ProcMacroExpander): Add new ProcMacroExpander class.
+       * rust-session-manager.cc (Session::expansion): Create new macro
+       expander and feed it to the expand visitor.
+       * util/rust-attributes.cc: Add macro_export builtin attribute.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Fix
+       attribute collection.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.h: Make trivial visitors public.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Make-lang.in: Add rust-proc-macro object to list.
+       * expand/rust-proc-macro.cc: New file.
+       * expand/rust-proc-macro.h: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-attributes.cc: Add attribute to the table.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Move
+       implementation from here...
+       * ast/rust-ast-collector.h: ... to here.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * Make-lang.in: Add "rust-dir-owner.o".
+       * ast/rust-ast.cc: Include "rust-dir-owner.h".
+       (Module::process_file_path):
+       Handle non-mod-rs external file modules properly.
+       * parse/rust-parse-impl.h: Include "rust-dir-owner.h".
+       (Parser::parse_module):
+       Handle non-mod-rs external file modules properly.
+       * util/rust-dir-owner.cc: New file.
+       * util/rust-dir-owner.h: New file.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-builtins.cc: Fix comments.
+       (MacroBuiltin::proc_macro_builtin): Add error message.
+       * expand/rust-macro-builtins.h: Fix comments.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-trait-resolve.cc: when the bound is concrete keep the mapping
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): add missing call
+       * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): make this the same as paths
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * util/rust-optional.h
+       (class Optional): Add volatile field to union.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-substitute-ctx.cc
+       (SubstituteCtx::substitute_metavar): Substitute crate metavar.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * parse/rust-parse-impl.h
+       (Parser::null_denotation): Allow struct expression referencing.
+
+2024-01-16  Charalampos Mitrodimas  <charmitro@gmail.com>
+
+       * ast/rust-ast-dump.cc (Dump::visit):
+       print literals based on their type.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * expand/rust-macro-builtins.cc (MacroBuiltin::dummy): New function.
+       * expand/rust-macro-builtins.h: Declare it.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-ast-builder.cc (AstBuilder::struct_expr_struct): New function.
+       (AstBuilder::let): Likewise.
+       (AstBuilder::struct_expr): Likewise.
+       (AstBuilder::struct_expr_field): Likewise.
+       (AstBuilder::field_access): Likewise.
+       (AstBuilder::wildcard): Likewise.
+       * ast/rust-ast-builder.h: Likewise.
+       * expand/rust-derive-clone.cc (DeriveClone::visit_union): Implement
+       properly.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * Make-lang.in: Add new files.
+       * expand/rust-derive.cc (DeriveVisitor::derive): Call into DeriveCopy.
+       * expand/rust-derive-copy.cc: New file.
+       * expand/rust-derive-copy.h: New file.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * expand/rust-derive-clone.cc (DeriveClone::visit_struct): Implement proper
+       cloning for structs with fields.
+       * ast/rust-ast-builder.cc (AstBuilder::struct_expr): New function.
+       (AstBuilder::struct_expr_field): Likewise.
+       (AstBuilder::field_access): Likewise.
+       (AstBuilder::let): Likewise.
+       * ast/rust-ast-builder.h: Declare new functions.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (convert): Use a variable instead
+       of multiple nested calls.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lex/rust-lex.h: Make build_token method public.
+       * lex/rust-token.h: Add a setter for a token location.
+       * util/rust-token-converter.cc (convert): Add the function to
+       convert from a Span to a Location.
+       (from_ident): Convert Ident span to a Location.
+       (from_literal): Convert Literal span to a Location.
+       (from_punct): Convert Punct span to a Location.
+       (from_group): Convert Group span to a Location.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (convert): Add implementation.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (convert): Update call to
+       constructors with location information.
+       (handle_suffix): Convert token locus to a Span and use it in the
+       literal.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-expand.cc
+       (MacroExpander::try_match_rule): Don't match delimiters for root matcher.
+       (MacroExpander::match_matcher): Add option to match delimiters.
+       * expand/rust-macro-expand.h
+       (MacroExpander::match_matcher): Likewise.
+       * parse/rust-parse-impl.h
+       (Parser::skip_token): Add zero argument method.
+       * parse/rust-parse.h:
+       (Parser::skip_token): Likewise.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * Make-lang.in: remove files
+       * backend/rust-compile-block.h: fix headers
+       * backend/rust-compile-expr.h: likewise
+       * backend/rust-compile-fnparam.h: likewise
+       * backend/rust-compile-item.h: likewise
+       * backend/rust-compile-pattern.h: likewise
+       * backend/rust-compile-resolve-path.h: likewise
+       * backend/rust-compile-stmt.h: likewise
+       * typecheck/rust-autoderef.cc: likewise
+       * typecheck/rust-hir-path-probe.cc: likewise
+       * typecheck/rust-hir-path-probe.h: likewise
+       * typecheck/rust-hir-trait-reference.h: likewise
+       * typecheck/rust-hir-trait-resolve.cc: use a for loop instead
+       * typecheck/rust-hir-trait-resolve.h: fix headers
+       * typecheck/rust-hir-type-check-expr.h: likewise
+       * typecheck/rust-hir-type-check-implitem.h: likewise
+       * typecheck/rust-hir-type-check-item.h: likewise
+       * typecheck/rust-hir-type-check-path.cc: likewise
+       * typecheck/rust-hir-type-check-pattern.h: likewise
+       * typecheck/rust-hir-type-check-stmt.h: likewise
+       * typecheck/rust-hir-type-check-type.h: likewise
+       * typecheck/rust-hir-type-check-util.cc: Removed.
+       * typecheck/rust-hir-type-check-util.h: Removed.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * Make-lang.in: Add new object files to Makefile.
+       * expand/rust-expand-visitor.cc (is_derive): Move function.
+       (is_builtin): Likewise.
+       (get_traits_to_derive): New function.
+       (derive_item): Likewise.
+       (ExpandVisitor::visit): Visit item/statements containers.
+       (ExpandVisitor::visit_outer_attrs): Take a reference on the attribute
+       instead of a copy.
+       (ExpandVisitor::is_derive): Deleted function.
+       (ExpandVisitor::is_builtin): Likewise.
+       * expand/rust-expand-visitor.h (RUST_EXPAND_VISITOR_H): Add missing #ifdef
+       guards.
+       (is_derive): Declare function.
+       (is_builtin): Likewise.
+       * expand/rust-macro-builtins.cc (builtin_macro_from_string): Use new
+       MacroBuiltin::builtins map.
+       (make_macro_path_str): Likewise.
+       * expand/rust-macro-builtins.h (enum class): Add builtin derive macros.
+       * expand/rust-derive-clone.cc: New file.
+       * expand/rust-derive-clone.h: New file.
+       * expand/rust-derive.cc: New file.
+       * expand/rust-derive.h: New file.
+       * util/rust-hir-map.cc (Mappings::insert_macro_def): Fix logic for
+       setting builtin macro transcribers.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-ast-builder.cc: New file.
+       * ast/rust-ast-builder.h: New file.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * expand/rust-macro-invoc-lexer.cc: Add missing copyright header.
+       * expand/rust-macro-substitute-ctx.cc: Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-session-manager.h:
+       Include "rust-optional.h".
+       (struct TargetOptions):
+       Store values in config key/value pairs as Optional<std::string> rather than std::string.
+       * rust-session-manager.cc
+       (TargetOptions::dump_target_options):
+       Handle Optional<std::string> values.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-casts.cc (TypeCastRules::check): do coercion
+       (TypeCastRules::emit_cast_error): clang-format
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * resolve/rust-ast-resolve-stmt.cc (ResolveStmt::visit): add name resolution
+       * resolve/rust-ast-resolve-stmt.h: likewise
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): insert resolved node
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * resolve/rust-ast-resolve-pattern.cc: remove unused
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): fix missing pop
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-expr.cc (CompileExpr::visit): remove unused
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * hir/rust-ast-lower-stmt.cc (ASTLoweringStmt::translate): hir lowering
+       (ASTLoweringStmt::visit): likewise
+       * hir/rust-ast-lower-stmt.h: likewise
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-substitute-ctx.cc
+       (SubstituteCtx::substitute_metavar): Allow substitution failure.
+       (SubstituteCtx::substitute_token):
+       Handle substitution failure, include dollar sign in count of tokens to substitute.
+       (SubstituteCtx::substitute_tokens):
+       Include dollar sign in count of tokens to substitute.
+       * expand/rust-macro-substitute-ctx.h
+       (SubstituteCtx::substitute_metavar):
+       Adjust signature and document new substitution failure handling.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-substitute-ctx.cc
+       (SubstituteCtx::check_repetition_amount):
+       Ignore single fragments while checking repetition amount.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): stop if error
+       * typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::assemble_sized_builtin): fix sized options
+       * typecheck/rust-tyty.cc (BaseType::satisfies_bound): its ok if its an ?T
+       (BaseType::bounds_compatible): likewise
+       * typecheck/rust-tyty.h: update prototype
+       * typecheck/rust-unify.cc (UnifyRules::go): check both sides bounds
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-expr.cc (HIRCompileBase::resolve_deref_adjustment):
+       reuse op overload code
+       * typecheck/rust-autoderef.cc (Adjuster::try_deref_type): update
+       (Adjuster::try_raw_deref_type): likewise
+       * typecheck/rust-autoderef.h: likewise
+       * typecheck/rust-hir-dot-operator.cc (MethodResolver::select):
+       improve debug loging
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address): refactor
+       * backend/rust-compile-base.h: likewise
+       * backend/rust-compile-expr.cc (CompileExpr::visit): likewise
+       * backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile): likewise
+
+2024-01-16  David Malcolm  <dmalcolm@redhat.com>
+
+       * typecheck/rust-hir-trait-reference.cc (TraitItemReference::is_optional): Remove
+       stray semicolon.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * resolve/rust-early-name-resolver.cc (EarlyNameResolver::go): Cleanup
+       order of calls when accumulating #[macro_use] macros.
+       (EarlyNameResolver::visit): Likewise.
+
+2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
+
+       * resolve/rust-early-name-resolver.cc (EarlyNameResolver::accumulate_escaped_macros):
+       Remove unnecessary visit.
+
+2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
+
+       * ast/rust-ast.cc (Attribute::check_cfg_predicate):
+       Only check first item as a predicate.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * util/rust-optional.h
+       (operator==): New for Optional<T> == Optional<U>.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * parse/rust-parse-impl.h
+       (Parser::parse_attr_input): Parse AttrInputMacro.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.cc (TokenCollector::visit): Propagate
+       coretype hint.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * util/rust-optional.h
+       (class Optional<T>): Improve inner state.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-substitute-ctx.cc
+       (SubstituteCtx::check_repetition_amount): Handle keywords.
+       (SubstituteCtx::substitute_token): Likewise.
+       * lex/rust-token.cc
+       (Token::get_str): Likewise.
+       * parse/rust-parse-impl.h
+       (Parser::parse_macro_match_fragment): Likewise.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-ast.h: Add `outer_attrs` to Item.
+       * ast/rust-expr.h: Make use of new inheritance methods.
+       * ast/rust-item.h: Likewise.
+       * ast/rust-macro.h: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (dispatch_float_literals): Remove
+       function.
+       (handle_suffix): Rename old dispatch and add one LitKind
+       argument.
+       (dispatch_integer_literals): Remove function.
+       (convert): Change call from dispatch to suffix handler.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lex/rust-token.h: Implement hash for token id enumeration.
+       * util/rust-token-converter.cc (dispatch_float_literals): Update
+       to new internals.
+       (dispatch_integer_literals): Likewise.
+       (convert): Likewise.
+       (string_literal): Remove function.
+       (byte_string_literal): Likewise.
+       (unsigned_literal): Likewise.
+       (signed_literal): Likewise.
+       (from_literal): Update with new internals.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-ast-dump.cc
+       (Dump::visit): Add AttrInputMacro visitor.
+       * ast/rust-ast-dump.h:
+       (Dump::visit): Likewise.
+       * ast/rust-ast-full-decls.h
+       (class AttrInputMacro): New.
+       * ast/rust-ast-collector.cc
+       (TokenCollector::visit):
+       Add and call out to AttrInputMacro visitor.
+       * ast/rust-ast-collector.h:
+       (TokenCollector::visit): Add AttrInputMacro visitor.
+       * ast/rust-ast-visitor.h:
+       (ASTVisitor::visit): Likewise.
+       * ast/rust-ast.cc
+       (AttrInputMacro::accept_vis): New.
+       (AttrInputMacro::as_string): New.
+       (AttrInputMacro::AttrInputMacro): New.
+       (AttrInputMacro::operator=): New.
+       * ast/rust-ast.h:
+       (AttrInput::AttrInputType::MACRO): New.
+       * ast/rust-expr.h
+       (class AttrInputMacro): New.
+       * checks/errors/rust-feature-gate.h:
+       (FeatureGate::visit): Add AttrInputMacro visitor.
+       * expand/rust-cfg-strip.cc
+       (CfgStrip::visit): Likewise.
+       * expand/rust-cfg-strip.h:
+       (CfgStrip::visit): Likewise.
+       * expand/rust-expand-visitor.cc
+       (ExpandVisitor::visit): Likewise.
+       * expand/rust-expand-visitor.h:
+       (ExpandVisitor::visit): Likewise.
+       * hir/rust-ast-lower-base.cc
+       (ASTLoweringBase::visit): Likewise.
+       * hir/rust-ast-lower-base.h:
+       (ASTLoweringBase::visit): Likewise.
+       * resolve/rust-ast-resolve-base.cc
+       (ResolverBase::visit): Likewise.
+       * resolve/rust-ast-resolve-base.h:
+       (ResolverBase::visit): Likewise.
+       * resolve/rust-early-name-resolver.cc
+       (EarlyNameResolver::visit): Likewise.
+       * resolve/rust-early-name-resolver.h:
+       (EarlyNameResolver::visit): Likewise.
+       * util/rust-attributes.cc
+       (AttributeChecker::visit): Likewise.
+       (check_doc_attribute): Handle AttrInputType::MACRO.
+       * util/rust-attributes.h:
+       (AttributeChecker::visit): Add AttrInputMacro visitor.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-macro.h
+       (MacroInvocation::clone_macro_invocation_impl): Make public.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * util/rust-optional.h
+       (struct std::hash<Optional<T>>): New.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * util/rust-optional.h
+       (class Optional<T&>): Use pointers internally.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-ast-dump.cc (Dump::visit): Implement dump for
+       `TupleIndexExpr`.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * lex/rust-token.cc
+       (token_id_keyword_string): Return std::string reference.
+       * lex/rust-token.h
+       (token_id_keyword_string): Return std::string reference.
+
+2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
+
+       * ast/rust-ast.h (Expr::as_expr_without_block): Remove.
+       (Expr::set_outer_attrs): Make public in base class.
+       * expand/rust-macro-expand.cc:
+       Add fixme comment for pre-existing bug.
+       * hir/tree/rust-hir.h: Remove Expr::as_expr_without_block.
+       * parse/rust-parse-impl.h (Parser::parse_lifetime): Use lifetime_from_token.
+       (Parser::lifetime_from_token): New method.
+       (Parser::null_denotation): Handle labelled loop expressions and for loop expressions.
+       (Parser::parse_loop_label): Make initial token a parameter.
+       (Parser::parse_labelled_loop_expr): Likewise.
+       (Parser::parse_for_loop_expr): Allow FOR token to already be skipped.
+       (Parser::parse_expr): Handle expr_can_be_stmt.
+       (Parser::parse_expr_with_block): Remove.
+       (Parser::parse_expr_stmt_with_block): Remove.
+       (Parser::parse_expr_stmt_without_block): Remove.
+       (Parser::parse_expr_without_block): Remove.
+       (Parser::parse_stmt_or_expr_with_block): Remove.
+       (Parser::parse_expr_stmt): Use parse_expr directly.
+       (Parser::parse_match_expr): Likewise.
+       (Parser::parse_stmt): Use parse_expr_stmt in more cases.
+       (Parser::parse_stmt_or_expr):
+       Rename from parse_stmt_or_expr_without_block, use parse_expr directly.
+       (Parser::parse_block_expr): Update error message.
+       * parse/rust-parse.h: Update declarations.
+
+2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
+
+       * ast/rust-ast-full-decls.h (class ExprStmtWithoutBlock): Remove.
+       (class ExprStmtWithBlock): Remove.
+       * ast/rust-stmt.h (class ExprStmtWithoutBlock): Remove.
+       (class ExprStmtWithBlock): Remove.
+       (class ExprStmt):
+       Make non-abstract, add common functionality from removed base classes.
+       * ast/rust-ast.h: Move to_stmt to base class.
+       * ast/rust-ast.cc (ExprStmtWithBlock::as_string): Remove.
+       * ast/rust-macro.h: Use new signature for to_stmt.
+       (ExprStmt::as_string): New method.
+       (ExprStmtWithoutBlock::as_string): Remove.
+       (BlockExpr::strip_tail_expr): Update for removed classes.
+       (ExprStmtWithoutBlock::accept_vis): Remove.
+       (ExprStmtWithBlock::accept_vis): Remove.
+       (ExprStmt::accept_vis): New method.
+       * ast/rust-ast-dump.cc (Dump::visit): Update for removed classes.
+       * ast/rust-ast-dump.h: Likewise.
+       * ast/rust-ast-collector.h: Likewise.
+       * ast/rust-ast-collector.cc (TokenStream::visit): Likewise.
+       * ast/rust-ast-visitor.h: Likewise.
+       * checks/errors/rust-feature-gate.h: Likewise.
+       * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Likewise.
+       * expand/rust-expand-visitor.h: Likewise.
+       * expand/rust-cfg-strip.cc (CfgStrip::visit): Likewise.
+       * expand/rust-cfg-strip.h: Likewise.
+       * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise.
+       * hir/rust-ast-lower-base.h: Likewise.
+       * hir/rust-ast-lower-stmt.cc (ASTLoweringStmt::visit): Likewise.
+       * hir/rust-ast-lower-stmt.h: Likewise.
+       * util/rust-attributes.cc (AttributeChecker::visit): Likewise.
+       * util/rust-attributes.h: Likewise.
+       * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Likewise.
+       * resolve/rust-ast-resolve-base.h: Likewise.
+       * resolve/rust-ast-resolve-stmt.h: Likewise.
+       * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
+       Likewise.
+       * resolve/rust-early-name-resolver.h: Likewise.
+       * parse/rust-parse-impl.h (Parser::parse_match_expr): Likewise.
+       (Parser::parse_stmt_or_expr_without_block): Likewise.
+       * parse/rust-parse.h: Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * lex/rust-token.cc
+       (token_id_is_keyword): New.
+       (token_id_keyword_string): New.
+       * lex/rust-token.h
+       (token_id_is_keyword): New.
+       (token_id_keyword_string): New.
+       * expand/rust-macro-expand.cc
+       (MacroExpander::match_fragment): Match keywords for ident fragment.
+       * parse/rust-parse-impl.h
+       (Parser::parse_identifier_or_keyword_token): Add.
+       * parse/rust-parse.h
+       (Parser::parse_identifier_or_keyword_token): Add.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (dispatch_float_literals): Invert
+       suffix condition.
+       (dispatch_integer_literals): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (convert): Fix style.
+       (from_ident): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (dispatch_float_literals): Make
+       input immutable.
+       (dispatch_integer_literals): Likewise.
+       (convert): Likewise.
+       * util/rust-token-converter.h (convert): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (from_tokenstream): Add
+       conversion of Ident structures.
+       (from_ident): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (from_literal): Add function
+       implementation.
+       (string_literal): String literal specific handler.
+       (byte_string_literal): Byte string specific handler.
+       (unsigned_literal): Unsigned literal specific handler.
+       (signed_literal): Signed literal specific handler.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (from_punct): Add conversion
+       implementation.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (dispatch_float_literals): Accept
+       const_TokenPtr instead of TokenPtr.
+       (dispatch_integer_literals): Likewise.
+       (convert): Accept vector of const_TokenPtr instead of a vector
+       of TokenPtr.
+       * util/rust-token-converter.h (convert): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (from_tokenstream): Add vector
+       for joined punct accumulation.
+       (from_ident): Accept const pointer vector.
+       (from_literal): Likewise.
+       (from_punct): Likewise.
+       (from_group): Likewise.
+       (from_tokentree): Likewise.
+       (convert): Likewise.
+       * util/rust-token-converter.h (convert): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (from_tokenstream): Add call to
+       from_tokentree.
+       (from_tokentree): Add implementation, from the from_tokenstream
+       function.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (from_punct): Add group
+       conversion.
+       (from_group): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (to_tokenstream): Change function
+       name from to_tokenstream to convert.
+       (convert): Likewise.
+       (from_tokenstream): Add tokenstream handler.
+       (from_ident): Add empty function.
+       (from_literal): Likewise.
+       (from_punct): Likewise.
+       (from_group): Likewise.
+       * util/rust-token-converter.h (to_tokenstream): Change function
+       name from to_tokenstream to convert.
+       (convert): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * util/rust-token-converter.cc (dispatch_float_literals): Remove
+       suffixed temporary variable.
+       (dispatch_integer_literals): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Make-lang.in: Add new rust-token-converter file.
+       * ast/rust-ast-collector.cc (pop_group): Function moved from
+       TokenCollector.
+       (dispatch_float_literals): Likewise.
+       (dispatch_integer_literals): Likewise.
+       (TokenCollector::collect): Removed function.
+       * ast/rust-ast-collector.h: Removed function prototype.
+       * util/rust-token-converter.cc: New file.
+       * util/rust-token-converter.h: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-collector.h (RUST_AST_TOKENSTREAM_H): Rename
+       headerguard from RUST_AST_TOKENSTREAM_H ...
+       (RUST_AST_COLLECTOR_H): ... to RUST_AST_COLLECTOR_H.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Make-lang.in: Change file name.
+       * ast/rust-ast-tokenstream.cc: Moved to...
+       * ast/rust-ast-collector.cc: ...here.
+       * ast/rust-ast-tokenstream.h: Moved to...
+       * ast/rust-ast-collector.h: ...here.
+       * rust-session-manager.cc: Change header name.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::TokenStream): Rename
+       TokenStream to TokenCollector.
+       (TokenCollector::TokenCollector): Likewise.
+       (TokenStream::collect_tokens): Likewise.
+       (TokenCollector::collect_tokens): Likewise.
+       (TokenStream::collect): Likewise.
+       (TokenCollector::collect): Likewise.
+       (TokenStream::visit): Likewise.
+       (TokenCollector::visit): Likewise.
+       (TokenStream::visit_items_joined_by_separator): Likewise.
+       (TokenCollector::visit_items_joined_by_separator): Likewise.
+       (TokenStream::visit_as_line): Likewise.
+       (TokenCollector::visit_as_line): Likewise.
+       (TokenStream::visit_items_as_lines): Likewise.
+       (TokenCollector::visit_items_as_lines): Likewise.
+       (TokenStream::visit_items_as_block): Likewise.
+       (TokenCollector::visit_items_as_block): Likewise.
+       (TokenStream::trailing_comma): Likewise.
+       (TokenCollector::trailing_comma): Likewise.
+       (TokenStream::newline): Likewise.
+       (TokenCollector::newline): Likewise.
+       (TokenStream::indentation): Likewise.
+       (TokenCollector::indentation): Likewise.
+       (TokenStream::increment_indentation): Likewise.
+       (TokenCollector::increment_indentation): Likewise.
+       (TokenStream::decrement_indentation): Likewise.
+       (TokenCollector::decrement_indentation): Likewise.
+       (TokenStream::visit_closure_common): Likewise.
+       (TokenCollector::visit_closure_common): Likewise.
+       (TokenStream::visit_loop_common): Likewise.
+       (TokenCollector::visit_loop_common): Likewise.
+       (TokenStream::visit_function_common): Likewise.
+       (TokenCollector::visit_function_common): Likewise.
+       * ast/rust-ast-tokenstream.h (class TokenStream): Likewise.
+       (class TokenCollector): Likewise.
+       * rust-session-manager.cc (Session::dump_tokenstream): Rename
+       token vector for clearer intent.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (dispatch_float_literals): Add
+       dispatch function for floating point literals.
+       (TokenStream::collect): Add call to dispatcher.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (dispatch_integer_literals):
+       Add a static function to dispatch depending on the core type.
+       (TokenStream::collect): Add call to dispatch function.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add
+       conversion for byte string and string.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add Ident
+       conversion.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add joint
+       punct token conversion.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add
+       conversion for single punctuation tokens.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (pop_group): Add a function to
+       easily collect a group from a given stack at the end of it.
+       (TokenStream::collect): Collect tokens as a rust compatible
+       Tokenstream type.
+       * ast/rust-ast-tokenstream.h (RUST_AST_TOKENSTREAM_H): Move
+       includes to stay constrained by guards.
+
+2024-01-16  M V V S Manoj Kumar  <mvvsmanojkumar@gmail.com>
+
+       * ast/rust-ast-full-decls.h (enum class): Added declaration.
+       (struct AnonConst): Added declaration.
+       (struct InlineAsmRegOrRegClass): Added declaration.
+       (struct InlineAsmOperand): Added declaration.
+       (struct InlineAsmPlaceHolder): Added declaration.
+       (struct InlineAsmTemplatePiece): Added declaration.
+       (struct TupleClobber): Added declaration.
+       (struct TupleTemplateStr): Added declaration.
+       * ast/rust-expr.h (class InlineAsm): Defined all it's data members outside.
+       (enum class InlineAsmOptions): Converted this to a enum class so we could use it in the HIR.
+       (struct AnonConst): Defined it independent of the AST::InlineAsm node.
+       (struct InlineAsmRegOrRegClass): Defined it independent of the AST::InlineAsm node.
+       (struct InlineAsmOperand): Defined it independent of the AST::InlineAsm node.
+       (struct InlineAsmPlaceHolder): Defined it independent of the AST::InlineAsm node.
+       (struct InlineAsmTemplatePiece): Defined it independent of the AST::InlineAsm node.
+       (struct TupleClobber): Defined it independent of the AST::InlineAsm node.
+       (struct TupleTemplateStr): Defined it independent of the AST::InlineAsm node.
+       * hir/tree/rust-hir-expr.h (class InlineAsmReg): Added defination.
+       (class InlineAsmRegClass): Added defination.
+       (struct InlineAsmRegOrRegClass): Added defination.
+       (class InlineAsm): Added defination.
+       * hir/tree/rust-hir-full-decls.h (class InlineAsmReg): Added declaration.
+       (class InlineAsmRegClass): Added declaration.
+       (struct InlineAsmRegOrRegClass): Added declaration.
+       (class InlineAsm): Added declaration.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-base.cc: track return type in fncontext
+       * backend/rust-compile-context.h (struct fncontext): likewise
+       * backend/rust-compile-expr.cc (CompileExpr::visit): apply coercion site
+       (CompileExpr::generate_closure_function): update push_context
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-base.cc (HIRCompileBase::compile_function_body):
+       add missing coercion_site codegen
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-expr.cc (CompileExpr::visit): refactr
+       (CompileExpr::get_fn_addr_from_dyn): likewise
+       (CompileExpr::get_receiver_from_dyn): likewise
+       (CompileExpr::type_cast_expression): likewise
+       * backend/rust-compile-type.cc (TyTyResolveCompile::visit): likewise
+       (TyTyResolveCompile::create_dyn_obj_record): likewise
+       (TyTyResolveCompile::create_slice_type_record): likewise
+       (TyTyResolveCompile::create_str_type_record): likewise
+       * backend/rust-compile-type.h: likewise
+       * backend/rust-compile.cc (HIRCompileBase::coercion_site1): likewise
+       (HIRCompileBase::coerce_to_dyn_object): refactor
+       * backend/rust-tree.h (SLICE_FLAG): removed
+       (SLICE_TYPE_P): removed
+       (RS_DST_FLAG): new flag
+       (RS_DST_FLAG_P): new predicate
+       * typecheck/rust-tyty.cc (ReferenceType::is_dyn_object): new helper
+       (ReferenceType::is_dyn_obj_type): likewise
+       (PointerType::is_dyn_object): likewise
+       (PointerType::is_dyn_obj_type): likewise
+       * typecheck/rust-tyty.h (class DynamicObjectType): moved up
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-type.cc (TyTyResolveCompile::visit): add filter
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-base.cc (HIRCompileBase::compile_function_body): use unit_expression
+       (HIRCompileBase::unit_expression): new helper
+       * backend/rust-compile-base.h: update prototype
+       * backend/rust-compile-block.cc (CompileBlock::visit): use unit_expression
+       * backend/rust-compile-expr.cc (CompileExpr::visit): likewise
+       (CompileExpr::generate_closure_function): likewise
+       * backend/rust-compile-implitem.cc (CompileTraitItem::visit): cleanup
+       * backend/rust-compile-item.cc (CompileItem::visit): likewise
+       * backend/rust-compile-pattern.cc (CompilePatternLet::visit): likewise
+       * backend/rust-compile-resolve-path.cc (ResolvePathRef::resolve): likewise
+       * backend/rust-compile-type.cc (TyTyResolveCompile::get_unit_type): new helper
+       (TyTyResolveCompile::visit): use new unit_type helper
+       * backend/rust-compile-type.h: likewise
+       * rust-backend.h: simplify the return_expression
+       * rust-gcc.cc (Gcc_backend::function_type): likewise
+       (Gcc_backend::return_statement): likewise
+       * backend/rust-constexpr.cc (eval_constant_expression): remove bad assertion
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * checks/lints/rust-lint-unused-var.cc (UnusedVariables::Lint): use the decl not the expr
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * parse/rust-parse-impl.h
+       (Parser::parse_trait_impl_function_or_method):
+       Parse function/method qualifiers after "default".
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-base.cc: add missing compile_locals call
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-ast.h (class AttrInputMetaItemContainer): Run clang-format.
+       (class DelimTokenTree): Likewise.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * resolve/rust-early-name-resolver.cc (is_macro_use_module): New function.
+       (EarlyNameResolver::accumulate_escaped_macros): New function.
+       (EarlyNameResolver::go): Use `accumulate_escaped_macros`.
+       (EarlyNameResolver::visit): Likewise.
+       * resolve/rust-early-name-resolver.h: Declare `accumulate_escaped_macros`.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-ast.h: Add take_items() and set_items() method to Crate.
+       * ast/rust-item.h: Add take_items() and set_items() method to Module.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-ast.h (enum Kind): Add MODULE variant.
+       * ast/rust-item.h: Return Kind::MODULE in AST::Module::get_kind().
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-macro.cc (builtin_macro_from_string): Move function.
+       * ast/rust-macro.h (enum class): Move enum.
+       (builtin_macro_from_string): Move function.
+       * expand/rust-macro-builtins.cc (builtin_macro_from_string): New function.
+       (make_macro_path_str): Use new bi-map.
+       (parse_single_string_literal): Use new `BuiltinMacro` enum.
+       (MacroBuiltin::include_bytes_handler): Likewise.
+       (MacroBuiltin::include_str_handler): Likewise.
+       (MacroBuiltin::compile_error_handler): Likewise.
+       (MacroBuiltin::concat_handler): Likewise.
+       (MacroBuiltin::env_handler): Likewise.
+       (MacroBuiltin::include_handler): Likewise.
+       (MacroBuiltin::sorry): New function.
+       * expand/rust-macro-builtins.h (enum class): Move enum here.
+       (builtin_macro_from_string): New function declaration.
+       * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Use
+       new function.
+       * util/rust-hir-map.cc (Mappings::insert_macro_def): Remove old
+       builtin macro map.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * expand/rust-macro-builtins.cc: Include bidirectional map.
+       * util/bi-map.h: New file.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-ast.cc
+       (BlockExpr::strip_tail_expr):
+       Try to take new tail expression from statements list.
+       * ast/rust-expr.h
+       (BlockExpr::strip_tail_expr):
+       Replace definition with only declaration.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-ast.h
+       (Stmt::is_expr): New.
+       * ast/rust-stmt.h
+       (ExprStmt::is_expr): New.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * expand/rust-macro-substitute-ctx.cc
+       (SubstituteCtx::substitute_repetition): Fix out-of-bounds.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Make-lang.in: Link against the static libproc_macro.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lang.opt: Add frust-extern option.
+       * rust-session-manager.cc (Session::handle_extern_option): Add
+       frust-extern option handler.
+       * rust-session-manager.h (struct Session): Add an unordered map
+       to store library name and locations.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * parse/rust-parse-impl.h
+       (Parser::parse_generic_params):
+       Handle parameter parsing error.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc: update for op overload
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): use the predicate
+       (TypeCheckExpr::resolve_segments): cleanup
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-trait-reference.cc (AssociatedImplTrait::AssociatedImplTrait):
+       bind the predicate
+       (AssociatedImplTrait::get_trait): remove
+       (AssociatedImplTrait::get_predicate): new getter
+       * typecheck/rust-hir-trait-reference.h: bind predicate
+       * typecheck/rust-hir-type-check-item.cc: update ctor
+       * typecheck/rust-type-util.cc (lookup_associated_impl_block): new function
+       * typecheck/rust-type-util.h (class BaseType): remove unused forward decl
+       (lookup_associated_impl_block): new helper
+       * typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::is_equal): new
+       * typecheck/rust-tyty-subst.cc (SubstitutionRef::lookup_associated_impl): use new helper
+       (SubstitutionRef::monomorphize): update usage/error handling
+       * typecheck/rust-tyty-subst.h: remove old prototype
+       * typecheck/rust-tyty.h: add is_equal decl
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * typecheck/rust-hir-type-check-pattern.cc
+       (TypeCheckPattern::visit): Type check StructPatternFieldIdentPat.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/rust-ast-lower-pattern.cc
+       (ASTLoweringPattern::visit): Lower StructPatternFieldIdentPat.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::resolve_fn_trait_call):
+       return the assoicated predicate
+       * typecheck/rust-hir-type-check-expr.h: update prototype
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * hir/rust-ast-lower-implitem.h: add missing where clause lowering
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * hir/tree/rust-hir-item.h: add get_locus() const
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/tree/rust-hir-pattern.h
+       (StructPatternFieldIdentPat::get_identifier): New.
+       (StructPatternFieldIdentPat::get_pattern): New.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * ast/rust-ast-dump.cc (Dump::visit): print parentheses around
+       unique expression operand.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust-session-manager.cc
+       (Session::enable_dump): Fix error messages.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-unify.cc (UnifyRules::emit_abi_mismatch): new error method
+       (UnifyRules::expect_fndef): add ABI check
+       * typecheck/rust-unify.h: prototype for new error method
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * util/rust-abi.cc (get_abi_from_string): add ABI mapping
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * hir/tree/rust-hir-pattern.h: add missing get_mutability
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
+       use new ClosureParamInfer on untyped parameters
+       * typecheck/rust-hir-type-check-pattern.cc (ClosureParamInfer::Resolve): interface
+       (ClosureParamInfer::ClosureParamInfer): constructor
+       (ClosureParamInfer::visit): visitors for each pattern
+       * typecheck/rust-hir-type-check-pattern.h (class ClosureParamInfer): new visitor
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-pattern.h: cleanup
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
+       return so we dont hit undefined behaviour
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-implitem.h: remove includes
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-item.cc (CompileItem::visit): remove bad checks
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * lang.opt: add lang option flag
+       * rust-lang.cc (grs_langhook_init_options_struct): enable by default
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::operator=):
+       we are done if other is in an error state
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-dot-operator.cc (MethodResolver::select): verify it is a method
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): use new interface
+       * typecheck/rust-hir-type-check-base.h: update prototype to include Self
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): lifewise
+       * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::resolve_impl_block_substitutions):
+       likewise
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): likewise
+       (TypeCheckExpr::resolve_segments): likewise
+       * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): likewise
+       (TypeResolveGenericParam::visit): likewise
+       (ResolveWhereClauseItem::visit): likewise
+       * typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound): likewise
+       (TypeBoundPredicate::apply_generic_arguments): likewise
+       (TypeBoundsMappings::lookup_predicate): likewise
+       * typecheck/rust-tyty-bounds.h: likewise
+       * typecheck/rust-tyty.h:likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check.h: New error state and missing copy implementations
+       * typecheck/rust-typecheck-context.cc (TypeCheckContextItem::TypeCheckContextItem):
+       missing copy ctor
+       (TypeCheckContextItem::operator=): missing copy implementation
+       (TypeCheckContextItem::get_error): new static function
+       (TypeCheckContextItem::is_error): new method
+       (TypeCheckContextItem::get_context_type): handle error state
+       (TypeCheckContextItem::get_defid): handle error state
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check.h: new helper
+       * typecheck/rust-typecheck-context.cc (TypeCheckContext::have_function_context):
+       implementation
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check.h: Add prototype
+       * typecheck/rust-typecheck-context.cc (TypeCheckContextItem::get_defid): implementation
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc: refactor
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-autoderef.cc: don't take a reference
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): likewise
+       * typecheck/rust-hir-type-check.h: remove reference
+       * typecheck/rust-typecheck-context.cc (TypeCheckContext::pop_return_type): likewise
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * resolve/rust-ast-resolve-pattern.cc
+       (PatternDeclaration::visit): Handle StructPatternFieldIdentPat.
+
+2024-01-16  TieWay59  <tieway59@foxmail.com>
+
+       PR translation/108890
+       * lang.opt: Fix translation mistakes 2023 in
+       GCC/Rust [PR108890]
+       (line 67): change the inconsistent tab to spaces
+       (line 75): wrap bare placeholder `integer`
+       (line 79): remove redundant text of `Choose which`
+       (line 96): remove redundant text of `Choose which`
+       (line 112): remove redundant `Flag to`
+       (line 124): correct the exclusive term `When to stop`
+       (line 124): correct typo of `copimlation`
+
+2024-01-16  M V V S Manoj Kumar  <mvvsmanojkumar@gmail.com>
+
+       * parse/rust-parse-impl.h (Parser::debug_dump_ast_output): Removed this funtion.
+       * rust-session-manager.cc (Session::enable_dump): Removed else if (arg == "parse").
+       (Session::compile_crate): Removed calls of dump_ast and dump_ast_expanded.
+       (Session::dump_ast): Removed this function.
+       (Session::dump_ast_expanded): Removed this function.
+       * rust-session-manager.h (struct CompileOptions): Removed the PARSER_AST_DUMP option.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_reference_pattern): Do not
+       call into `parse_pattern` anymore.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/rust-ast-lower-pattern.cc
+       (ASTLoweringPattern::translate): Add is_let_top_level parameter.
+       (ASTLoweringPattern::visit): Handle is_let_top_level.
+       * hir/rust-ast-lower-pattern.h
+       (class ASTLoweringPattern): Add is_let_top_level.
+       * hir/rust-ast-lower-stmt.cc
+       (ASTLoweringStmt::visit): Set is_let_top_level.
+
+2024-01-16  Zheyuan Chen  <sephirotheca17@gmail.com>
+
+       * ast/rust-ast-dump.cc: fix bad formatting for associated type.
+
+2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>
+
+       * hir/rust-ast-lower-expr.h, hir/rust-ast-lower-expr.cc:
+       Lower AST::ErrorPropagationExpr to HIR::ErrorPropagationExpr
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix scope
+       resolution token output.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Keep
+       associated type.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit_function_common):
+       Fix function body output.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_outer_attribute): Fix
+       attribute status.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lex/rust-token.cc (Token::as_string): Fix lifetime string
+       representation.
+
+2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>
+
+       * resolve/rust-ast-resolve-expr.cc: Add "break rust" Easter egg
+
+2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>
+
+       * resolve/rust-ast-resolve-expr.h,
+       resolve/rust-ast-resolve-expr.cc: Add ResolveExpr::funny_error
+
+2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>
+
+       * ast/rust-ast.h: Add AST::Kind::IDENTIFIER
+
+2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>
+
+       * ast/rust-ast.h (Kind): Convert into a C++ enum class
+       * expand/rust-macro-builtins.cc: Adapt to the change
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc
+       (TypeCheckExpr::visit): Add implementation for IfLetExprConseqElse.
+       * typecheck/rust-hir-type-check-expr.h:
+       (TypeCheckExpr::visit): Remove stub implementation for IfLetExprConseqElse.
+       * hir/rust-ast-lower-expr.cc
+       (ASTLoweringExpr::visit): Lower IfLetExpr{,ConseqElse}.
+       * hir/rust-ast-lower-expr.h:
+       (ASTLoweringExpr::visit): Likewise.
+       * hir/rust-ast-lower-block.h
+       (ASTLoweringIfLetBlock::visit): Lower IfLetExprConseqElse.
+       (ASTLoweringExprWithBlock::visit): Likewise.
+       * hir/rust-ast-lower.cc
+       (ASTLoweringIfLetBlock::visit): Lower IfLetExprConseqElse.
+       * hir/tree/rust-hir-expr.h
+       (IfLetExprConseqElse::IfLetExprConseqElse): Make constructor more general.
+       (IfLetExprConseqElse::vis_else_block): Add.
+       (IfLetExprConseqElse::get_else_block): Add.
+       * resolve/rust-ast-resolve-expr.cc
+       (ResolveExpr::visit): Add IfLetExprConseqElse visitor.
+       * resolve/rust-ast-resolve-expr.h
+       (ResolveExpr::visit): Add IfLetExprConseqElse visitor.
+
+2024-01-16  Sebastian Kirmayer  <gnu@kirmayer.eu>
+
+       * parse/rust-parse-impl.h
+       (Parser<ManagedTokenSource>::parse_macro_match_repetition):
+       reject separator in `?` repetition
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-expr.h
+       (class IfLetExprConseqElse): Make else_block ExprWithBlock.
+       (class IfLetExprConseqIf): Remove.
+       (class IfLetExprConseqIfLet): Remove.
+       * ast/rust-ast-full-decls.h
+       (class IfLetExprConseqIf): Remove.
+       (class IfLetExprConseqIfLet): Remove.
+       * ast/rust-ast.cc
+       (IfLetExprConseqElse::as_string): Adjust output.
+       (IfLetExprConseqIf::as_string): Remove.
+       (IfLetExprConseqIfLet::as_string): Remove.
+       (IfLetExprConseqIf::accept_vis): Remove.
+       (IfLetExprConseqIfLet::accept_vis): Remove.
+       * ast/rust-ast-visitor.h
+       (ASTVisitor::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       * ast/rust-ast-dump.cc
+       (Dump::visit): Likewise.
+       * ast/rust-ast-dump.h:
+       (Dump::visit): Likewise.
+       * ast/rust-ast-tokenstream.cc
+       (TokenStream::visit): Likewise.
+       * ast/rust-ast-tokenstream.h
+       (TokenStream::visit): Likewise.
+       * util/rust-attributes.cc
+       (AttributeChecker::visit): Likewise.
+       * util/rust-attributes.h:
+       (AttributeChecker::visit): Likewise.
+       * resolve/rust-early-name-resolver.cc
+       (EarlyNameResolver::visit): Likewise.
+       * resolve/rust-early-name-resolver.h
+       (EarlyNameResolver::visit): Likewise.
+       * resolve/rust-ast-resolve-base.h
+       (ResolverBase::visit): Likewise.
+       * resolve/rust-ast-resolve-base.cc
+       (ResolverBase::visit): Likewise.
+       * checks/errors/rust-feature-gate.h
+       (FeatureGate::visit): Likewise.
+       * expand/rust-cfg-strip.cc
+       (CfgStrip::visit): Likewise.
+       * expand/rust-cfg-strip.h:
+       (CfgStrip::visit): Likewise.
+       * expand/rust-expand-visitor.cc
+       (ExpandVisitor::visit): Likewise.
+       * expand/rust-expand-visitor.h
+       (ExpandVisitor::visit): Likewise.
+       * hir/rust-ast-lower-base.cc
+       (ASTLoweringBase::visit): Likewise.
+       * hir/rust-ast-lower-base.h:
+       (ASTLoweringBase::visit): Likewise.
+       * parse/rust-parse-impl.h
+       (Parser::parse_if_let_expr): Replace IfLetExprConseqIf{,Let} with IfLetExprConseqElse.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add struct
+       name and curly braces to output tokenstream.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * parse/rust-parse-impl.h
+       (Parser::parse_macro_match): Handle underscore.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/tree/rust-hir-full-decls.h
+       (class ExprStmtWithoutBlock): Remove.
+       (class ExprStmtWithBlock): Remove.
+       * hir/tree/rust-hir-stmt.h
+       (class ExprStmt):
+       Add remaining ExprStmtWith{,out}Block functionality.
+       (class ExprStmtWithoutBlock): Remove.
+       (class ExprStmtWithBlock): Remove.
+       * hir/rust-ast-lower-stmt.cc
+       (ASTLoweringStmt::visit):
+       Lower to HIR::ExprStmt instead of deriving class.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-compile-stmt.cc
+       (CompileStmt::visit): Unify ExprStmtWith{,out}Block visitors.
+       * backend/rust-compile-stmt.h
+       (CompileStmt::visit): Likewise.
+       * backend/rust-compile-item.h
+       (CompileItem::visit): Likewise.
+       * hir/rust-hir-dump.cc
+       (Dump::visit): Likewise.
+       * hir/rust-hir-dump.h
+       (Dump::visit): Likewise.
+       * hir/tree/rust-hir-stmt.h
+       (ExprStmt::accept_vis): Add.
+       (ExprStmtWithoutBlock::accept_vis): Remove.
+       (ExprStmtWithBlock::accept_vis): Remove.
+       * hir/tree/rust-hir.cc
+       (ExprStmt::accept_vis): Add.
+       (ExprStmtWithoutBlock::accept_vis): Remove.
+       (ExprStmtWithBlock::accept_vis): Remove.
+       * hir/tree/rust-hir-visitor.h
+       (HIRFullVisitor::visit): Likewise.
+       (HIRFullVisitorBase::visit): Likewise.
+       (HIRStmtVisitor::visit): Likewise.
+       * checks/errors/rust-const-checker.cc
+       (ConstChecker::visit): Likewise.
+       * checks/errors/rust-const-checker.h
+       (ConstChecker::visit): Likewise.
+       * checks/errors/rust-unsafe-checker.cc
+       (UnsafeChecker::visit): Likewise.
+       * checks/errors/rust-unsafe-checker.h
+       (UnsafeChecker::visit): Likewise.
+       * checks/errors/privacy/rust-privacy-reporter.cc
+       (PrivacyReporter::visit): Likewise.
+       * checks/errors/privacy/rust-privacy-reporter.h
+       (PrivacyReporter::visit): Likewise.
+       * checks/lints/rust-lint-marklive.h
+       (MarkLive::visit): Likewise.
+       * typecheck/rust-hir-type-check-stmt.cc
+       (TypeCheckStmt::visit): Likewise.
+       * typecheck/rust-hir-type-check-stmt.h
+       (TypeCheckStmt::visit): Likewise.
+       * typecheck/rust-tycheck-dump.h
+       (TypeResolverDump::visit): Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/tree/rust-hir-stmt.h
+       (ExprStmt::expr): Add field.
+       (ExprStmt::get_expr): Add method.
+       (ExprStmt::ExprStmt): Add copy/move constructors, modify existing constructor.
+       (ExprStmt::operator=): Add assignment operator.
+       (ExprStmtWithoutBlock::expr): Remove field.
+       (ExprStmtWithoutBlock::get_expr): Remove method.
+       (ExprStmtWithoutBlock::ExprStmt):
+       Remove copy/move constructors, modify existing constructor.
+       (ExprStmtWithoutBlock::operator=): Remove assignment operator.
+       (ExprStmtWithBlock::expr): Remove field.
+       (ExprStmtWithBlock::get_expr): Remove method.
+       (ExprStmtWithBlock::ExprStmt): Remove copy/move constructors, modify existing constructor.
+       (ExprStmtWithBlock::operator=): Remove assignment operator.
+       (ExprStmt::as_string): Add method.
+       (ExprStmtWithBlock::as_string): Remove method.
+       (ExprStmtWithoutBlock::as_string): Remove method.
+       * hir/tree/rust-hir.cc
+       (ExprStmt::as_string): Add method.
+       (ExprStmtWithBlock::as_string): Remove method.
+       (ExprStmtWithoutBlock::as_string): Remove method.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-expr.h
+       (class IfExprConseqElse): Make else_block ExprWithBlock.
+       (class IfExprConseqIf): Remove.
+       (class IfExprConseqIfLet): Remove.
+       * ast/rust-ast-full-decls.h
+       (class IfExprConseqIf): Remove.
+       (class IfExprConseqIfLet): Remove.
+       * ast/rust-ast.cc
+       (IfExprConseqElse::as_string): Adjust output.
+       (IfExprConseqIf::as_string): Remove.
+       (IfExprConseqIfLet::as_string): Remove.
+       (IfExprConseqIf::accept_vis): Remove.
+       (IfExprConseqIfLet::accept_vis): Remove.
+       * ast/rust-ast-visitor.h
+       (ASTVisitor::visit): Remove IfExprConseqIf{,Let} visitors.
+       * ast/rust-ast-tokenstream.cc
+       (TokenStream::visit): Likewise.
+       * ast/rust-ast-tokenstream.h
+       (TokenStream::visit): Likewise.
+       * ast/rust-ast-dump.cc
+       (Dump::visit): Likewise.
+       * ast/rust-ast-dump.h
+       (Dump::visit): Likewise.
+       * checks/errors/rust-feature-gate.h
+       (FeatureGate::visit): Likewise.
+       * util/rust-attributes.cc
+       (AttributeChecker::visit): Likewise.
+       * util/rust-attributes.h
+       (AttributeChecker::visit): Likewise.
+       * resolve/rust-early-name-resolver.cc
+       (EarlyNameResolver::visit): Likewise.
+       * resolve/rust-early-name-resolver.h
+       (EarlyNameResolver::visit): Likewise.
+       * resolve/rust-ast-resolve-base.h
+       (ResolverBase::visit): Likewise.
+       * resolve/rust-ast-resolve-base.cc
+       (ResolverBase::visit): Likewise.
+       * resolve/rust-ast-resolve-expr.h
+       (ResolveExpr::visit): Remove IfExprConseqIf visitor.
+       * resolve/rust-ast-resolve-expr.cc
+       (ResolveExpr::visit): Likewise.
+       * expand/rust-cfg-strip.cc
+       (CfgStrip::visit): Remove IfExprConseqIf{,Let} visitors.
+       * expand/rust-cfg-strip.h
+       (CfgStrip::visit): Likewise.
+       * expand/rust-expand-visitor.cc
+       (ExpandVisitor::visit): Likewise.
+       * expand/rust-expand-visitor.h
+       (ExpandVisitor::visit): Likewise.
+       * hir/rust-ast-lower-base.cc
+       (ASTLoweringBase::visit): Likewise.
+       * hir/rust-ast-lower-base.h
+       (ASTLoweringBase::visit): Likewise.
+       * hir/rust-ast-lower-block.h
+       (ASTLoweringIfBlock::visit): Remove IfExprConseqIf visitor.
+       (ASTLoweringExprWithBlock::visit): Likewise.
+       * hir/rust-ast-lower.cc
+       (ASTLoweringIfBlock::visit):
+       Remove IfExprConseqIf visitor, adjust IfExprConseqElse lowering.
+       * hir/rust-ast-lower-expr.h
+       (ASTLoweringExpr::visit): Remove IfExprConseqIf visitor.
+       * hir/rust-ast-lower-expr.cc
+       (ASTLoweringExpr::visit): Likewise.
+       * parse/rust-parse-impl.h
+       (Parser::parse_if_expr): Replace IfExprConseqIf{,Let} with IfExprConseqElse.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix inner
+       attribute tokenstream output.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * ast/rust-ast-dump.cc (Dump::debug): New.
+       * ast/rust-ast-dump.h (Dump::debug): Untemplate it.
+       (debug): New.
+       * ast/rust-ast.h (class Visitable): New.
+       (class TokenTree): Inherit from Visitable.
+       (class MacroMatch): Likewise.
+       (class AttrInput): Likewise.
+       (class MetaItemInner): Likewise.
+       (class Pattern): Likewise.
+       (classTypeParamBound): Likewise.
+       (class GenericParam): Likewise.
+       (class TraitItem): Likewise.
+       (classInherentImplItem): Likewise.
+       (class TraitImplItem): Likewise.
+       (class ExternalItem): Likewise.
+       (class SingleASTNode): Likewise.
+
+2024-01-16  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * rust-lang.cc (grs_langhook_type_for_mode): Placate clang-format.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h: Add boolean for differenciation.
+       * parse/rust-parse-impl.h (Parser::parse_doc_comment): Change
+       function interface to make code cleaner. It should return a body
+       instead of the whole attribute.
+       (Parser::parse_inner_attribute): Specify the inner status of the
+       node.
+       (Parser::parse_attribute_body): Change function interface to
+       make the code cleaner much like parse_doc_comment.
+       (Parser::parse_outer_attribute): Specify outer status of the
+       node.
+       * parse/rust-parse.h: Update functions prototypes.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile):
+       reuse resolve_method_address to monomorphize the call if required
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments):
+       allow matching against unimplemented trait item bounds
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-path-probe.cc: dont subst with a dynamic object
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address): moved here
+       * backend/rust-compile-base.h: refactored prototype
+       * backend/rust-compile-expr.cc (CompileExpr::resolve_method_address): refactor
+       * backend/rust-compile-expr.h: likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile): remove unused
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile): call destructure
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-expr.cc (CompileExpr::resolve_method_address):
+       call path probe impl trait
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Add call
+       to attribute expansion function.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.cc (ExpandVisitor::visit_outer_attrs):
+       Change condition order.
+       (ExpandVisitor::visit_inner_using_attrs): Likewise.
+       (ExpandVisitor::visit_attrs_with_derive): Likewise.
+       (ExpandVisitor::is_builtin): Add builtin identification
+       function.
+       * expand/rust-expand-visitor.h: Add function prototype.
+       * util/rust-attributes.cc: Add missing rustc_builtin_macro
+       attribute.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.cc (ExpandVisitor::expand_struct_fields):
+       Add call to expand structu fields.
+       (ExpandVisitor::expand_function_params): Add call to expand
+       function parameters.
+       (ExpandVisitor::expand_closure_params): Add call to expand
+       closure parameters.
+       (ExpandVisitor::visit): Add calls for item outer attribute
+       expansions.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.cc (ExpandVisitor::expand_outer_attribute):
+       Stub for a single attribute expansion.
+       (ExpandVisitor::visit_outer_attrs): Visit the attributes to
+       expand on a given item.
+       * expand/rust-expand-visitor.h: Add function prototypes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast.h: Add getter to Expr class.
+       * ast/rust-expr.h: Add override attribute to existing getters.
+       Also implement it for RangeExpr, attempting to retrieve outer
+       attributes on those types will crash the compiler.
+       * ast/rust-macro.h: Add override attribute to existing getters.
+       * ast/rust-path.h: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Add call
+       to inner attribute stub.
+       (ExpandVisitor::expand_inner_attribute): Expand one single
+       attribute.
+       (ExpandVisitor::visit_inner_using_attrs): Expand a given item
+       using a vector of attributes.
+       (ExpandVisitor::visit_inner_attrs): Visit inner attributes of a
+       given item.
+       * expand/rust-expand-visitor.h: Add function prototypes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Add call
+       to derive expander.
+       (ExpandVisitor::expand_derive): Expand a single derive.
+       (ExpandVisitor::visit_attrs_with_derive): Visit an item with
+       derive attributes.
+       (ExpandVisitor::is_derive): Identify a derive attribute.
+       * expand/rust-expand-visitor.h: Add function prototypes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix ICE.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Remove
+       default separator.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Visit inner
+       attributes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Change token
+       type.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix existing
+       and implement remaining attribute visitors.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor
+       to the union's outer attributes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add call to
+       inner attribute visitor.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix ICE.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Make comma
+       mandatory.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Remove
+       additional semicolon output.
+       * ast/rust-ast-tokenstream.h: Change block visitor prototype
+       with a default value for trailing tokens.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Make-lang.in: Add two new files to the list of sources.
+       * ast/rust-ast-full.h: Add new ast formatting header.
+       * ast/rust-ast.cc (enum indent_mode): Move formatting function
+       to it's own file.
+       (indent_spaces): Likewise.
+       (get_string_in_delims): Likewise.
+       (enum AttrMode): Likewise.
+       (get_mode_dump_desc): Likewise.
+       (append_attributes): Likewise.
+       (unquote_string): Likewise.
+       (GroupedExpr::as_string): Move pattern implementation to it's
+       own file.
+       (RangePattern::as_string): Likewise.
+       (RangePatternBoundLiteral::as_string): Likewise.
+       (SlicePattern::as_string): Likewise.
+       (AltPattern::as_string): Likewise.
+       (TuplePatternItemsMultiple::as_string): Likewise.
+       (TuplePatternItemsRanged::as_string): Likewise.
+       (TuplePattern::as_string): Likewise.
+       (StructPatternField::as_string): Likewise.
+       (StructPatternFieldIdent::as_string): Likewise.
+       (StructPatternFieldTuplePat::as_string): Likewise.
+       (StructPatternFieldIdentPat::as_string): Likewise.
+       (StructPatternElements::as_string): Likewise.
+       (StructPattern::as_string): Likewise.
+       (LiteralPattern::as_string): Likewise.
+       (ReferencePattern::as_string): Likewise.
+       (IdentifierPattern::as_string): Likewise.
+       (TupleStructItemsNoRange::as_string): Likewise.
+       (TupleStructItemsRange::as_string): Likewise.
+       (TupleStructPattern::as_string): Likewise.
+       (GroupedExpr::accept_vis): Likewise.
+       (LiteralPattern::accept_vis): Likewise.
+       (IdentifierPattern::accept_vis): Likewise.
+       (WildcardPattern::accept_vis): Likewise.
+       (RestPattern::accept_vis): Likewise.
+       (RangePatternBoundLiteral::accept_vis): Likewise.
+       (RangePatternBoundPath::accept_vis): Likewise.
+       (RangePatternBoundQualPath::accept_vis): Likewise.
+       (RangePattern::accept_vis): Likewise.
+       (ReferencePattern::accept_vis): Likewise.
+       (StructPatternFieldTuplePat::accept_vis): Likewise.
+       (StructPatternFieldIdentPat::accept_vis): Likewise.
+       (StructPatternFieldIdent::accept_vis): Likewise.
+       (StructPattern::accept_vis): Likewise.
+       (TupleStructItemsNoRange::accept_vis): Likewise.
+       (TupleStructItemsRange::accept_vis): Likewise.
+       (TupleStructPattern::accept_vis): Likewise.
+       (TuplePatternItemsMultiple::accept_vis): Likewise.
+       (TuplePatternItemsRanged::accept_vis): Likewise.
+       (TuplePattern::accept_vis): Likewise.
+       (GroupedPattern::accept_vis): Likewise.
+       (SlicePattern::accept_vis): Likewise.
+       (AltPattern::accept_vis): Likewise.
+       * ast/rust-ast-formatting.cc: New file.
+       * ast/rust-ast-formatting.h: New file.
+       * ast/rust-pattern.cc: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Make-lang.in: Add new file for rust-path implementation.
+       * ast/rust-ast.cc (PathInExpression::as_string): Move function
+       to the new file.
+       (PathPattern::as_string): Likewise.
+       (QualifiedPathInExpression::as_string): Likewise.
+       (ConstGenericParam::as_string): Likewise.
+       (QualifiedPathInType::as_string): Likewise.
+       (TypePath::as_string): Likewise.
+       (PathPattern::convert_to_simple_path): Likewise.
+       (TypePath::as_simple_path): Likewise.
+       (PathExprSegment::as_string): Likewise.
+       (GenericArgs::as_string): Likewise.
+       (GenericArgsBinding::as_string): Likewise.
+       (TypePath::to_trait_bound): Likewise.
+       (TypePathSegmentGeneric::as_string): Likewise.
+       (TypePathFunction::as_string): Likewise.
+       (TypePathSegmentFunction::as_string): Likewise.
+       (ConstGenericParam::accept_vis): Likewise.
+       (PathInExpression::accept_vis): Likewise.
+       (TypePathSegment::accept_vis): Likewise.
+       (TypePathSegmentGeneric::accept_vis): Likewise.
+       (TypePathSegmentFunction::accept_vis): Likewise.
+       (TypePath::accept_vis): Likewise.
+       (QualifiedPathInExpression::accept_vis): Likewise.
+       (QualifiedPathInType::accept_vis): Likewise.
+       (GenericArg::disambiguate_to_const): Likewise.
+       (GenericArg::disambiguate_to_type): Likewise.
+       * ast/rust-path.cc: New file.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-item.cc (CompileItem::visit): unwrap the constant expression
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * util/rust-lang-item.h
+       (RustLangItem::ItemType::FN): Add.
+       (RustLangItem::ItemType::FN_MUT): Add.
+       (RustLangItem::Parse): Handle FN and FN_MUT.
+       (RustLangItem::ToString): Handle FN and FN_MUT.
+
+2024-01-16  Emanuele Micheletti  <micheletti.emanuele@hotmail.com>
+
+       * typecheck/rust-casts.cc (TypeCastRules::cast_rules):
+       case INTEGRAL handles TypeKind::CHAR
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit):
+       add check for reference marker and type's in self params
+       (ResolveItem::visit): likewise
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_root_path):
+       remove bad generics check
+       (TypeCheckExpr::resolve_segments): likewise
+       * typecheck/rust-hir-type-check-type.cc (TypeCheckType::resolve_root_path): likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * resolve/rust-ast-resolve-item.cc
+       (ResolveTraitItems::visit): add name resolution self param
+       (ResolveItem::visit): likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::TypeBoundPredicate): this is an empty
+       (TypeBoundPredicate::operator=): likewise
+       * typecheck/rust-tyty-subst.cc (SubstitutionArgumentMappings::empty): new interface
+       (SubstitutionArgumentMappings::is_error): this marks it as an error
+       * typecheck/rust-tyty-subst.h: update prototypes
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * checks/errors/privacy/rust-privacy-reporter.cc
+       (PrivacyReporter::check_base_type_privacy): allow error types to be permissive
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit_items_as_lines):
+       Handle trailing chars.
+       (TokenStream::visit_items_as_block): Likewise.
+       (TokenStream::visit): Fix visitor.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lex/rust-token.cc (Token::as_string): Add type hint output.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust-session-manager.cc (Session::enable_dump): Enable new
+       dump.
+       (Session::compile_crate): CLI argument parsing.
+       (Session::dump_tokenstream): Dump the tokenstream as a string in
+       the specified file.
+       * rust-session-manager.h (struct CompileOptions): Add
+       tokenstream dump option.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * lex/rust-token.cc (Token::as_string): Add as_string
+       implementation.
+       * lex/rust-token.h: Add as_string prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::TokenStream): Add
+       constructor.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::collect_tokens): Add
+       getter.
+       (TokenStream::go): Rename function.
+       (TokenStream::visit): Likewise.
+       * ast/rust-ast-tokenstream.h: Add collect prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Change
+       getter name.
+       * ast/rust-ast.cc (SimplePath::as_string): Change attribute
+       name.
+       * ast/rust-ast.h (class SimplePath): Refactor attribute name and
+       change getter name.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit_as_line): Add
+       formatting calls.
+       (TokenStream::visit_items_as_block): Likewise.
+       (TokenStream::newline): Add stub.
+       (TokenStream::indentation): Add stub.
+       (TokenStream::increment_indentation): Add stub.
+       (TokenStream::decrement_indentation): Add stub.
+       (TokenStream::visit): Add formatting calls.
+       (TokenStream::visit_function_common): Likewise.
+       * ast/rust-ast-tokenstream.h: Add stub prototypes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor
+       implementation.
+       * ast/rust-ast-tokenstream.h: Add additional function prototype.
+       * ast/rust-item.h: Add some getters.
+       * ast/rust-macro.h: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor.
+       * ast/rust-item.h: Add missing getters.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add
+       visitors.
+       (TokenStream::visit_closure_common): Merge common code for
+       closure visitors.
+       * ast/rust-ast-tokenstream.h: Add function prototype.
+       * ast/rust-expr.h: Add missing move attribute getter.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add
+       visitors.
+       (TokenStream::visit_loop_common): Merge common loop code.
+       * ast/rust-ast-tokenstream.h: Add function prototypes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Implement
+       visitor.
+       * ast/rust-ast-tokenstream.h: Add function prototype for missing
+       component.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::trailing_comma):
+       Output a trailing comma to the token stream according to the
+       configuration.
+       * ast/rust-ast-tokenstream.h: Add function prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Implement
+       visitors.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-tokenstream.cc (TokenStream::visit): Implement
+       visitors.
+       * ast/rust-ast-tokenstream.h: Add function prototypes.
+       * ast/rust-ast.h: Add missing getters.
+       * ast/rust-expr.h: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Make-lang.in: Add rust-as-tokenstream to compile list.
+       * ast/rust-item.h: Add missing getter for location.
+       * ast/rust-ast-tokenstream.cc: Add ast visitor implementation.
+       * ast/rust-ast-tokenstream.h: New file.
+       * ast/rust-pattern.h: Add getter.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit):
+       Add implicit unit type as the return type when not specified
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * util/rust-attributes.cc: Add stable to the table of known attributes
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): return early on bad type
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::TypeCheckPattern):
+       remove assertion in favor of check
+       (TypeCheckPattern::visit): likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-expr.cc (CompileExpr::generate_closure_function):
+       when its not a block we dont have any ribs to generate locals from
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * parse/rust-parse-impl.h
+       (Parser<ManagedTokenSource>::parse_expr_without_block):
+       Remove direct array expression handling.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-item.h: Fix `Visibility::has_path()` implementation.
+       * checks/errors/privacy/rust-visibility-resolver.cc
+       (VisibilityResolver::resolve_module_path): Check if we are dealing with pub(crate) properly.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): Set
+       resolved_node_id when visiting root segment of SimplePath.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-ast.h: Call SimplePath constructor differently in
+       SimplePath::from_str
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * hir/rust-ast-lower-type.h: Move all remaining definitions to source file.
+       * hir/rust-ast-lower-type.cc (ASTLoweringType::translate): Moved to source file.
+       (ASTLoweringType::visit): Likewise.
+       (ASTLowerGenericParam::translate): Likewise.
+       (ASTLowerGenericParam::visit): Likewise.
+       (ASTLoweringTypeBounds::translate): Likewise.
+       (ASTLoweringTypeBounds::visit): Likewise.
+       (ASTLowerWhereClauseItem::translate): Likewise.
+       (ASTLowerWhereClauseItem::visit): Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-pattern.h: Remove commented out code.
+
+2024-01-16  emanuele-em  <micheletti.emanuele@hotmail.com>
+
+       * typecheck/rust-casts.cc (TypeCastRules::cast_rules): BOOL removed from switch cases
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * Make-lang.in: Rename rust-asttribute-visitor.o -> rust-cfg-strip.o
+       * expand/rust-attribute-visitor.cc: Moved to...
+       * expand/rust-cfg-strip.cc: ...here.
+       * expand/rust-attribute-visitor.h: Moved to...
+       * expand/rust-cfg-strip.h: ...here.
+       * expand/rust-macro-expand.cc: Fix include of rust-attribute-visitor.h
+       * expand/rust-macro-builtins.cc: Likewise.
+       * rust-session-manager.cc (Session::expansion): Call CfgStrip instead of
+       AttrVisitor.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * Make-lang.in: Add new object file.
+       * expand/rust-attribute-visitor.cc (AttrVisitor::go): Visit all items of a
+       crate.
+       (AttrVisitor::expand_struct_fields): Do not perform macro expansion anymore.
+       (AttrVisitor::expand_function_params): Likewise.
+       (AttrVisitor::expand_generic_args): Likewise.
+       (AttrVisitor::expand_qualified_path_type): Likewise.
+       (AttrVisitor::expand_self_param): Likewise.
+       (AttrVisitor::expand_trait_function_decl): Likewise.
+       (AttrVisitor::expand_trait_method_decl): Likewise.
+       (AttrVisitor::visit): Likewise.
+       (AttrVisitor::maybe_expand_expr): Remove function.
+       (AttrVisitor::maybe_expand_type): Likewise.
+       * expand/rust-attribute-visitor.h: Do not keep MacroExpander inside AttrVisitor
+       anymore.
+       * expand/rust-macro-expand.h (struct MacroExpander): Turn ContextType into an
+       enum class for more type safety.
+       * expand/rust-macro-expand.cc (MacroExpander::expand_crate): Use new ContextType
+       API.
+       * rust-session-manager.cc (Session::expansion): Call into ExpandVisitor.
+       * expand/rust-expand-visitor.cc: New file.
+       * expand/rust-expand-visitor.h: New file.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * expand/rust-macro-expand.cc (MacroExpander::expand_crate): Do not cfg-attr
+       strip in MacroExpander
+       (MacroExpander::fails_cfg): Function moved...
+       (MacroExpander::fails_cfg_with_expand): Function moved...
+       (MacroExpander::expand_cfg_attrs): Function moved...
+       * expand/rust-attribute-visitor.cc (fails_cfg): ...here.
+       (fails_cfg_with_expand): ...here.
+       (expand_cfg_attrs): ...here.
+       (AttrVisitor::expand_struct_fields): Use new functions.
+       (AttrVisitor::expand_tuple_fields): Likewise.
+       (AttrVisitor::expand_function_params): Likewise.
+       (AttrVisitor::visit): Likewise.
+       (AttrVisitor::go): New function.
+       * expand/rust-attribute-visitor.h: Declare AttrVisitor::go.
+       * expand/rust-macro-expand.h (struct MacroExpander): Remove cfg-attr related
+       functions.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_macro_definition):
+       New function.
+       * hir/rust-ast-lower-base.h: Declare `lower_macro_definition`.
+       * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Lower public
+       macro definitions.
+       * hir/rust-ast-lower-stmt.cc (ASTLoweringStmt::visit): Likewise.
+       * hir/rust-ast-lower-stmt.h: Add visitor for `AST::MacroRulesDefinition`.
+       * hir/rust-ast-lower.cc (ASTLowering::go): Formatting.
+       (ASTLoweringBlock::visit): Visit `AST::MacroRulesDefinition`
+       (ASTLoweringIfLetBlock::visit): Formatting.
+       (ASTLoweringExprWithBlock::visit): Formatting.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Add new visitor
+       for AST::MacroRulesDefinition.
+       * hir/rust-ast-lower-item.h: Declare above mentioned visitor.
+       * metadata/rust-export-metadata.cc (ExportContext::emit_macro): New function.
+       * metadata/rust-export-metadata.h: Declare it.
+       (PublicInterface::gather_export_data): Go through each exported macro.
+       * util/rust-hir-map.cc (Mappings::insert_exported_macro): New function.
+       (Mappings::get_exported_macros): New function.
+       * util/rust-hir-map.h: Add new mappings for exported macros.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * backend/rust-compile-item.h: Revert 1c946687239b86a92839d57dfbc928ad7ce35eae.
+       * backend/rust-compile-stmt.h: Likewise.
+       * checks/errors/privacy/rust-privacy-reporter.cc
+       (PrivacyReporter::visit): Likewise.
+       * checks/errors/privacy/rust-privacy-reporter.h: Likewise.
+       * checks/errors/privacy/rust-pub-restricted-visitor.cc
+       (PubRestrictedVisitor::visit): Likewise.
+       * checks/errors/privacy/rust-pub-restricted-visitor.h: Likewise.
+       * checks/errors/privacy/rust-reachability.cc
+       (ReachabilityVisitor::visit): Likewise.
+       * checks/errors/privacy/rust-reachability.h: Likewise.
+       * checks/errors/privacy/rust-visibility-resolver.cc
+       (VisibilityResolver::visit): Likewise.
+       * checks/errors/privacy/rust-visibility-resolver.h: Likewise.
+       * checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
+       * checks/errors/rust-const-checker.h: Likewise.
+       * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
+       * checks/errors/rust-unsafe-checker.h: Likewise.
+       * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Likewise.
+       * hir/rust-ast-lower-item.h: Likewise.
+       * hir/rust-hir-dump.cc (Dump::visit): Likewise.
+       * hir/rust-hir-dump.h: Likewise.
+       * hir/tree/rust-hir-full-decls.h (class ExportedMacro): Likewise.
+       * hir/tree/rust-hir-item.h (class ExportedMacro): Likewise.
+       * hir/tree/rust-hir-visitor.h: Likewise.
+       * hir/tree/rust-hir.cc (ExportedMacro::accept_vis): Likewise.
+       (ExportedMacro::get_locus): Likewise.
+       (ExportedMacro::get_item_kind): Likewise.
+       (ExportedMacro::clone_item_impl): Likewise.
+       * hir/tree/rust-hir.h: Likewise.
+       * metadata/rust-export-metadata.cc: Likewise.
+       * typecheck/rust-hir-type-check-item.h: Likewise.
+       * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise.
+       * typecheck/rust-hir-type-check-stmt.h: Likewise.
+       * typecheck/rust-tycheck-dump.h: Likewise.
+       * util/rust-attributes.cc: Likewise.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): return a TraitObject
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-trait-resolve.cc: don't inject extra inference variables
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-ast-dump.cc (Dump::visit): Remove extraneous semicolon when
+       dumping macro rules.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * metadata/rust-imports.cc (add_search_path): Change `Go` -> `Rust`.
+       (Import::try_package_in_directory): Likewise.
+       (Import::find_export_data): Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/rust-ast-lower-pattern.cc
+       (ASTLoweringPattern::visit): Lower AltPattern.
+       * hir/rust-ast-lower-pattern.h:
+       (ASTLoweringPattern::visit): Add AltPattern visitor.
+
+2024-01-16  Xiao Ma  <turingki@yeah.net>
+           Thomas Schwinge  <thomas@codesourcery.com>
+
+       * checks/errors/rust-feature-gate.cc: Adjust 'ld'->'u'.
+       * checks/errors/rust-feature.h: Adjust
+       the type of `m_issue`: 'uint64_t' -> 'unsigned'.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * ast/rust-ast.h: add const get_final_segment helper
+       * hir/rust-ast-lower-enumitem.h: dont add an item mapping for enumitems
+       * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): add enum to enum-items mappings
+       * hir/rust-ast-lower-stmt.cc (ASTLoweringStmt::visit): likewise
+       * hir/tree/rust-hir-item.h: add non const helper to get variants
+       * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): resolve the use declaration
+       * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): handle self
+       * resolve/rust-ast-resolve-toplevel.h: add enum item mappings to module mappings
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_root_path): ensure variant
+       (TypeCheckExpr::resolve_segments): likewise
+       * typecheck/rust-type-util.cc (query_type): lookup enum's
+       * util/rust-hir-map.cc (Mappings::insert_hir_enumitem): enum item mappings
+       (Mappings::lookup_hir_enumitem): likewise
+       * util/rust-hir-map.h: likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * resolve/rust-ast-resolve-path.cc (ResolvePath::ResolvePath): return NodeId
+       (ResolvePath::go): update signiture
+       (ResolvePath::resolve_path): return resolved_node_id
+       * resolve/rust-ast-resolve-path.h: update prototypes
+
+2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
+
+       * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit):
+       Add lowering for SlicePattern.
+       * hir/rust-ast-lower-pattern.h: Likewise.
+       * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::visit):
+       Add name resolution visit for SlicePattern.
+       * resolve/rust-ast-resolve-pattern.h: Likewise.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * hir/rust-ast-lower-implitem.h (RUST_AST_LOWER_IMPLITEM_H): cleanup header usage
+       * hir/rust-ast-lower-item.cc: likewise
+       * hir/rust-ast-lower-item.h (RUST_AST_LOWER_ITEM): likewise
+       * hir/rust-ast-lower-stmt.cc: likewise
+       * hir/rust-ast-lower-stmt.h (RUST_AST_LOWER_STMT): likewise
+       * hir/rust-ast-lower-type.h: likewise
+       * hir/rust-ast-lower.cc: likewise
+       * hir/rust-ast-lower.h: likewise
+       * resolve/rust-ast-resolve-expr.h: likewise
+       * resolve/rust-ast-resolve-item.cc: likewise
+       * resolve/rust-ast-resolve-item.h: likewise
+       * resolve/rust-ast-resolve-stmt.cc: likewise
+       * resolve/rust-ast-resolve-stmt.h: likewise
+       * resolve/rust-ast-resolve-struct-expr-field.h: likewise
+       * resolve/rust-ast-resolve-toplevel.h: likewise
+       * resolve/rust-ast-resolve-type.h: likewise
+       * resolve/rust-ast-resolve.h: likewise
+
+2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
+
+       * resolve/rust-ast-resolve-pattern.h (class ResolvePattern): Removed.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-intrinsic.cc (move_val_init_handler): new intrinsice
+       (uninit_handler): use a builtin memcpy
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-coercion.cc (TypeCoercionRules::select): use the result
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::resolve_literal): fix ctor
+       * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): likewise
+       * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): likewise
+       * typecheck/rust-typecheck-context.cc (TypeCheckContext::push_new_loop_context): likewise
+       * typecheck/rust-tyty-util.cc (TyVar::get_implicit_infer_var): likewise
+       * typecheck/rust-tyty.cc (InferType::InferType): new ctor with type hint
+       (InferType::clone): fix ctor
+       (InferType::apply_primitive_type_hint): new function to apply possible hint
+       * typecheck/rust-tyty.h: update prototypes
+       * typecheck/rust-unify.cc (UnifyRules::expect_inference_variable): apply type hints
+       (UnifyRules::expect_bool): likewise
+       (UnifyRules::expect_char): likewise
+       (UnifyRules::expect_int): likewise
+       (UnifyRules::expect_uint): likewise
+       (UnifyRules::expect_float): likewise
+       (UnifyRules::expect_isize): likewise
+       (UnifyRules::expect_usize): likewise
+
+2024-01-16  Jiakun Fan  <120090316@link.cuhk.edu.cn>
+
+       * hir/rust-hir-dump.cc (Dump::go): fix format
+       (Dump::visit): impl `visit (AST::Attribute &)`, dump inner attrs and
+       `visit (Lifetime &)`
+       * hir/rust-hir-dump.h:add `visit (AST::Attribute &)`
+
+2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
+
+       * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::go):
+       Print out consistency errors.
+       (PatternDeclaration::visit): Implement visit for AltPattern.
+       (PatternDeclaration::add_new_binding): New helper function for
+       adding a binding to identifier.
+       * resolve/rust-ast-resolve-pattern.h (struct BindingInfo):
+       New struct to facilitate checking for inconsistencies between bindings.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-compile-block.h
+       (CompileConditionalBlocks::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       (CompileExprWithBlock::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       * backend/rust-compile-expr.h
+       (CompileExpr::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       * checks/errors/rust-unsafe-checker.cc
+       (UnsafeChecker::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       * checks/errors/rust-unsafe-checker.h
+       (UnsafeChecker::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       * checks/errors/rust-const-checker.cc
+       (ConstChecker::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       * checks/errors/rust-const-checker.h
+       (ConstChecker::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       * checks/errors/privacy/rust-privacy-reporter.cc
+       (PrivacyReporter::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       * checks/errors/privacy/rust-privacy-reporter.h
+       (PrivacyReporter::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       * hir/tree/rust-hir-expr.h
+       (class IfLetExprConseqElse): Make else_block ExprWithBlock.
+       (class IfLetExprConseqIf): Remove.
+       (class IfLetExprConseqIfLet): Remove.
+       * hir/tree/rust-hir-full-decls.h
+       (class IfLetExprConseqIf): Remove.
+       (class IfLetExprConseqIfLet): Remove.
+       * hir/tree/rust-hir.cc
+       (IfLetExprConseqElse::as_string): Adjust output.
+       (IfLetExprConseqIf::as_string): Remove.
+       (IfLetExprConseqIfLet::as_string): Remove.
+       (IfLetExprConseqIf::accept_vis): Remove.
+       (IfLetExprConseqIfLet::accept_vis): Remove.
+       * hir/tree/rust-hir-visitor.h
+       (HIRFullVisitor::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       (HIRFullVisitorBase::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       (HIRExpressionVisitor::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       * hir/rust-hir-dump.cc
+       (Dump::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       * hir/rust-hir-dump.h
+       (Dump::visit): Remove IfLetExprConseqIf{,Let} visitors.
+       * typecheck/rust-hir-type-check-expr.h
+       (TypeCheckExpr::visit): Remove IfLetExprConseqIf{,Let} visitors.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * typecheck/rust-hir-type-check-expr.cc
+       (TypeCheckExpr::visit): Remove IfExprConseqIf visitor.
+       * typecheck/rust-hir-type-check-expr.h
+       (TypeCheckExpr::visit): Remove IfExprConseqIf{,Let} visitor.
+       * backend/rust-compile-block.cc
+       (CompileConditionalBlocks::visit): Remove IfExprConseqIf visitor.
+       * backend/rust-compile-block.h
+       (CompileConditionalBlocks::visit): Remove IfExprConseqIf{,Let} visitors.
+       (CompileExprWithBlock::visit):
+       Remove IfExprConseqIf{,Let} visitors, implement BlockExpr visitor.
+       * backend/rust-compile-expr.cc
+       (CompileExpr::visit): Remove IfExprConseqIf visitor.
+       * backend/rust-compile-expr.h
+       (CompileExpr::visit): Remove IfExprConseqIf{,Let} visitors.
+       * checks/lints/rust-lint-marklive.h
+       (MarkLive::visit): Remove IfExprConseqIf visitor.
+       * checks/errors/rust-const-checker.cc
+       (ConstChecker::visit): Remove IfExprConseqIf{,Let} visitors.
+       * checks/errors/rust-const-checker.h
+       (ConstChecker::visit): Remove IfExprConseqIf{,Let} visitors.
+       * checks/errors/rust-unsafe-checker.cc
+       (UnsafeChecker::visit): Remove IfExprConseqIf{,Let} visitors.
+       * checks/errors/rust-unsafe-checker.h
+       (UnsafeChecker::visit): Remove IfExprConseqIf{,Let} visitors.
+       * checks/errors/privacy/rust-privacy-reporter.cc
+       (PrivacyReporter::visit): Remove IfExprConseqIf{,Let} visitors.
+       * checks/errors/privacy/rust-privacy-reporter.h
+       (PrivacyReporter::visit): Remove IfExprConseqIf{,Let} visitors.
+       * hir/tree/rust-hir-expr.h
+       (class IfExprConseqElse): Make else_block ExprWithBlock.
+       (class IfExprConseqIf): Remove.
+       (class IfExprConseqIfLet): Remove.
+       * hir/tree/rust-hir-full-decls.h
+       (class IfExprConseqIf): Remove.
+       (class IfExprConseqIfLet): Remove.
+       * hir/tree/rust-hir.cc
+       (IfExprConseqElse::as_string): Adjust output.
+       (IfExprConseqIf::as_string): Remove.
+       (IfExprConseqIfLet::as_string): Remove.
+       (IfExprConseqIf::accept_vis): Remove.
+       (IfExprConseqIfLet::accept_vis): Remove.
+       * hir/tree/rust-hir-visitor.h
+       (HIRFullVisitor::visit): Remove IfExprConseqIf{,Let} visitors.
+       (HIRFullVisitorBase::visit): Remove IfExprConseqIf{,Let} visitors.
+       (HIRExpressionVisitor::visit): Remove IfExprConseqIf{,Let} visitors.
+       * hir/rust-hir-dump.cc
+       (Dump::visit): Remove IfExprConseqIf{,Let} visitors.
+       * hir/rust-hir-dump.h
+       (Dump::visit): Remove IfExprConseqIf{,Let} visitors.
+       * hir/rust-ast-lower.cc
+       (ASTLoweringIfBlock::visit): Replace HIR::IfExprConseqIf with HIR::IfExprConseqElse.
+
+2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
+
+       * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit):
+       Push a Product context instead of an Or context.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-inherent-impl-overlap.h (class ImplItemToName): remove
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-expr.cc (CompileExpr::resolve_method_address): remove unused code
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): remove infer call
+       (TypeCheckExpr::resolve_root_path): only infer when we need to
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-dot-operator.cc (MethodResolver::select): add debug
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile.cc: use unify_and instead
+       * typecheck/rust-tyty-subst.cc (SubstitutionRef::solve_missing_mappings_from_this): remove
+       * typecheck/rust-tyty-subst.h: update header
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-coercion.cc (TypeCoercionRules::select): use new unify_and interface
+       * typecheck/rust-hir-dot-operator.cc (MethodResolver::try_hook): grab bounds behind refs
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-base.cc: fix headers
+       * backend/rust-compile-base.h: likewise
+       * backend/rust-compile-expr.cc: likewise
+       * backend/rust-compile-extern.h: likewise
+       * backend/rust-compile-pattern.cc: likewise
+       * backend/rust-compile.cc: likewise
+       * typecheck/rust-autoderef.cc: likewise
+       * typecheck/rust-hir-dot-operator.cc: likewise
+       * typecheck/rust-hir-inherent-impl-overlap.h: likewise
+       * typecheck/rust-hir-path-probe.cc: likewise
+       * typecheck/rust-hir-trait-resolve.cc: likewise
+       * typecheck/rust-hir-type-check-base.cc: likewise
+       * typecheck/rust-hir-type-check-base.h (RUST_HIR_TYPE_CHECK_BASE): likewise
+       * typecheck/rust-hir-type-check-enumitem.cc: likewise
+       * typecheck/rust-hir-type-check-expr.cc: likewise
+       * typecheck/rust-hir-type-check-implitem.cc: likewise
+       * typecheck/rust-hir-type-check-item.cc: likewise
+       * typecheck/rust-hir-type-check-path.cc: likewise
+       * typecheck/rust-hir-type-check-pattern.cc: likewise
+       * typecheck/rust-hir-type-check-stmt.cc: likewise
+       * typecheck/rust-hir-type-check-struct.cc: likewise
+       * typecheck/rust-hir-type-check-type.cc: likewise
+       * typecheck/rust-hir-type-check-type.h: likewise
+       * typecheck/rust-hir-type-check.h (RUST_HIR_TYPE_CHECK): likewise
+       * typecheck/rust-tyty-bounds.cc: likewise
+       * typecheck/rust-tyty-call.cc: likewise
+       * typecheck/rust-tyty-subst.cc: likewise
+       * typecheck/rust-tyty.cc: likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-tyty.cc (BaseType::has_subsititions_defined): new implementation
+       (BaseType::needs_generic_substitutions): likewise
+       (ProjectionType::needs_generic_substitutions): remove
+       (ProjectionType::has_subsititions_defined): remove
+       * typecheck/rust-tyty.h: update header
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): update to use new interface
+       (TypeCheckExpr::resolve_root_path): likewise
+       (TypeCheckExpr::resolve_segments): likewise
+       * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): likewise
+       (TypeCheckType::resolve_root_path): likewise
+       * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args): likewise
+       * typecheck/rust-tyty.cc (BaseType::supports_substitutions): likewise
+       (BaseType::can_substitute): remove
+       (BaseType::contains_type_parameters): remove
+       (handle_substitions): cleanup
+       (TupleType::handle_substitions): update
+       (FnType::handle_substitions): update
+       (ProjectionType::supports_substitutions): update
+       * typecheck/rust-tyty.h: update header
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-tyty.h: cleanup ordering of header
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-tyty.cc (BaseType::monomorphized_clone): new impl
+       (InferType::monomorphized_clone): remove
+       (ErrorType::monomorphized_clone): likewise
+       (ADTType::monomorphized_clone): likewise
+       (TupleType::monomorphized_clone): likewise
+       (FnType::monomorphized_clone): likewise
+       (FnPtr::monomorphized_clone): likewise
+       (ClosureType::monomorphized_clone): likewise
+       (ArrayType::clone): likewise
+       (ArrayType::get_var_element_type): likewise
+       (ArrayType::monomorphized_clone): likewise
+       (SliceType::clone): likewise
+       (SliceType::get_var_element_type): likewise
+       (SliceType::monomorphized_clone): likewise
+       (BoolType::monomorphized_clone): likewise
+       (IntType::monomorphized_clone): likewise
+       (UintType::monomorphized_clone): likewise
+       (FloatType::monomorphized_clone): likewise
+       (USizeType::monomorphized_clone): likewise
+       (ISizeType::monomorphized_clone): likewise
+       (CharType::monomorphized_clone): likewise
+       (ReferenceType::clone): likewise
+       (ReferenceType::get_var_element_type): likewise
+       (ReferenceType::monomorphized_clone): likewise
+       (PointerType::clone): likewise
+       (PointerType::get_var_element_type): likewise
+       (PointerType::monomorphized_clone): likewise
+       (ParamType::monomorphized_clone): likewise
+       (StrType::monomorphized_clone): likewise
+       (NeverType::monomorphized_clone): likewise
+       (PlaceholderType::monomorphized_clone): likewise
+       (ProjectionType::monomorphized_clone): likewise
+       (DynamicObjectType::monomorphized_clone): likewise
+       * typecheck/rust-tyty.h: update header
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-tyty.cc (BaseType::is_unit): new implementation
+       (ErrorType::is_unit): remove
+       (TupleType::is_unit): likewise
+       (NeverType::is_unit): likewise
+       (PlaceholderType::is_unit): likewise
+       (ProjectionType::is_unit): likewise
+       * typecheck/rust-tyty.h: update header
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-tyty.cc (BaseType::is_concrete): new implementation
+       (InferType::is_concrete): remove
+       (ErrorType::is_concrete): likewise
+       (StructFieldType::is_concrete): likewise
+       (ADTType::is_concrete): likewise
+       (TupleType::is_concrete): likewise
+       (BoolType::is_concrete): likewise
+       (IntType::is_concrete): likewise
+       (UintType::is_concrete): likewise
+       (FloatType::is_concrete): likewise
+       (USizeType::is_concrete): likewise
+       (ISizeType::is_concrete): likewise
+       (CharType::is_concrete): likewise
+       (ReferenceType::is_concrete): likewise
+       (PointerType::is_concrete): likewise
+       (ParamType::is_concrete): likewise
+       (StrType::is_concrete): likewise
+       (NeverType::is_concrete): likewise
+       (PlaceholderType::is_concrete): likewise
+       (ProjectionType::is_concrete): likewise
+       (DynamicObjectType::is_concrete): likewise
+       * typecheck/rust-tyty.h: update header
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-type.cc (TyTyResolveCompile::TyTyResolveCompile): call destructure
+       (TyTyResolveCompile::compile): use error_mark_node
+       (TyTyResolveCompile::visit): use error_mark_node
+       * backend/rust-compile-type.h: remove recursive ops
+
+2024-01-16  Tage Johansson  <frans.tage@gmail.com>
+
+       * parse/rust-parse.cc: fix follow-sets
+
+2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
+
+       * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit) :declare and
+       pass bindings to PatternDeclaration::go.
+       (ResolveExpr::resolve_closure_param): Likewise.
+       * resolve/rust-ast-resolve-expr.h: Likewise.
+       * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit): Likewise.
+       (ResolveItem::visit): Likewise.
+       * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::go): Likewise.
+       (PatternDeclaration::visit): check for previous identifier bindings
+       before inserting the new one.
+       * resolve/rust-ast-resolve-pattern.h (enum PatternBoundCtx): New enum.
+       * resolve/rust-ast-resolve-stmt.h: pass bindings to PatterDeclaration::go.
+
+2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
+
+       * backend/rust-compile-expr.cc (CompileExpr::generate_closure_function):
+       handle closure parameters pattern bindings using CompilePatternBindings visitor
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * README.md (process): Rename `rust1` to `crab1` in examples.
+       * Make-lang.in: Rename `rust1` to `crab1`.
+       * config-lang.in: Likewise.
+       * lang-specs.h: Likewise.
+       * rustspec.cc (lang_specific_driver): Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/tree/rust-hir-pattern.h
+       (SlicePattern::get_items): Add.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/tree/rust-hir-full-decls.h
+       (struct GenericArgsBinding): Convert to class.
+       (class GenericArgsBinding): Convert from struct.
+       (struct TypePathFunction): See above.
+       (class TypePathFunction): See above.
+       (struct QualifiedPathType): See above.
+       (class QualifiedPathType): See above.
+       * ast/rust-ast-full-decls.h
+       (struct WhereClause): See above.
+       (class WhereClause): See above.
+       (struct SelfParam): See above.
+       (class SelfParam): See above.
+       (struct FunctionQualifiers): See above.
+       (class FunctionQualifiers): See above.
+       (struct FunctionParam): See above.
+       (class FunctionParam): See above.
+       (struct StructField): See above.
+       (class StructField): See above.
+       (struct TupleField): See above.
+       (class TupleField): See above.
+       (struct TraitFunctionDecl): See above.
+       (class TraitFunctionDecl): See above.
+       (struct TraitMethodDecl): See above.
+       (class TraitMethodDecl): See above.
+       (struct NamedFunctionParam): See above.
+       (class NamedFunctionParam): See above.
+       * hir/tree/rust-hir-path.h
+       (struct GenericArgsBinding): See above.
+       (class GenericArgsBinding): See above.
+       (struct TypePathFunction): See above.
+       (class TypePathFunction): See above.
+       (struct QualifiedPathType): See above.
+       (class QualifiedPathType): See above.
+       * ast/rust-item.h
+       (struct WhereClause): See above.
+       (class WhereClause): See above.
+       (struct SelfParam): See above.
+       (class SelfParam): See above.
+       (struct FunctionQualifiers): See above.
+       (class FunctionQualifiers): See above.
+       (struct FunctionParam): See above.
+       (class FunctionParam): See above.
+       (struct StructField): See above.
+       (class StructField): See above.
+       (struct TupleField): See above.
+       (class TupleField): See above.
+       (struct TraitFunctionDecl): See above.
+       (class TraitFunctionDecl): See above.
+       (struct TraitMethodDecl): See above.
+       (class TraitMethodDecl): See above.
+       (struct NamedFunctionParam): See above.
+       (class NamedFunctionParam): See above.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/tree/rust-hir-pattern.h
+       (class AltPattern): Remove duplicate access specifier.
+       (AltPattern::get_alts): Add.
+       * hir/tree/rust-hir.cc
+       (AltPattern::as_string): Add.
+       (AltPattern::accept_vis): Add.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * hir/tree/rust-hir-item.h (class ExportedMacro): Add new ExportedMacro class.
+       * hir/tree/rust-hir.cc (ExportedMacro::accept_vis): New function.
+       (ExportedMacro::get_locus): Likewise.
+       (ExportedMacro::get_item_kind): Likewise.
+       (ExportedMacro::clone_item_impl): Likewise.
+       * hir/tree/rust-hir-full-decls.h (class ExportedMacro): Forward declare class.
+       * backend/rust-compile-item.h: Add visitor for ExportedMacro.
+       * backend/rust-compile-stmt.h: Likewise.
+       * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Likewise.
+       * checks/errors/privacy/rust-privacy-reporter.h: Likewise.
+       * checks/errors/privacy/rust-pub-restricted-visitor.cc (PubRestrictedVisitor::visit):
+       Likewise.
+       * checks/errors/privacy/rust-pub-restricted-visitor.h: Likewise.
+       * checks/errors/privacy/rust-reachability.cc (ReachabilityVisitor::visit): Likewise.
+       * checks/errors/privacy/rust-reachability.h: Likewise.
+       * checks/errors/privacy/rust-visibility-resolver.cc (VisibilityResolver::visit): Likewise.
+       * checks/errors/privacy/rust-visibility-resolver.h: Likewise.
+       * checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
+       * checks/errors/rust-const-checker.h: Likewise.
+       * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
+       * checks/errors/rust-unsafe-checker.h: Likewise.
+       * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Likewise.
+       * hir/rust-ast-lower-item.h: Likewise.
+       * hir/rust-hir-dump.cc (Dump::visit): Likewise.
+       * hir/rust-hir-dump.h: Likewise.
+       * hir/tree/rust-hir-visitor.h: Likewise.
+       * metadata/rust-export-metadata.cc: Likewise.
+       * typecheck/rust-hir-type-check-item.h: Likewise.
+       * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise.
+       * typecheck/rust-hir-type-check-stmt.h: Likewise.
+       * typecheck/rust-tycheck-dump.h: Likewise.
+       * hir/tree/rust-hir.h: Add new ItemKind::MacroExport variant.
+       * util/rust-attributes.cc: Add #[macro_export] attribute.
+
+2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
+
+       * backend/rust-compile-fnparam.cc (CompileFnParam::visit):
+       Added visit implementation for ReferencePattern.
+       (CompileFnParam::create_tmp_param_var):
+       Refactored duplicated code into a helper function.
+       * backend/rust-compile-fnparam.h: Added visit implementation for
+       ReferencePattern.
+       * backend/rust-compile-pattern.cc (CompilePatternBindings::visit):
+       Added visit implementation for ReferencePattern and
+       IdentifierPattern.
+       * backend/rust-compile-pattern.h: Added visit implementation for
+       ReferencePattern and IdentifierPattern.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Move
+       unloaded module item loading to...
+       * expand/rust-attribute-visitor.cc (AttrVisitor::visit): ...here.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * hir/rust-hir-dump.cc (Dump::visit): Simplify indentation dump to single line.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * ast/rust-ast-dump.cc (Indent::Indent): Move to separate file.
+       (operator<<): Move to separate file.
+       (Indent::increment): Move to separate file.
+       (Indent::decrement): Move to separate file.
+       * ast/rust-ast-dump.h (class Indent): Move to separate file.
+       * hir/rust-hir-dump.cc (Dump::Dump): Use new indentation object.
+       (Dump::go): Use new indentation object.
+       (Dump::visit): Use new indention object.
+       * hir/rust-hir-dump.h: Use new indentation object.
+       * util/rust-dump.h: New file. Moved Indentation from rust-ast-dump.cc
+
+2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
+
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
+       Add the missing infered type assignment
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       PR rust/108111
+       * ast/rust-ast-full-decls.h (StructPatternElements): Declare as a
+       class.
+       * ast/rust-item.h (EnumItem): Mark several method as being
+       overrides.
+       * ast/rust-pattern.h (StructPattern::get_locus): Add override.
+       * lex/rust-lex.h (BufferInputSource): Use reference_wrapper
+       instead of bare reference.
+       (TokenSource::get): Add method to implement the reference_wrapper
+       interface.
+       * typecheck/rust-tyty.h (TypeBoundPredicate): Add empty dtor.
+       * util/rust-buffered-queue.h (peek): Source token stream is now
+       using a reference_wrapper, use .get()
+
+2024-01-16  vincent  <jfan30@u.rochester.edu>
+
+       * typecheck/rust-hir-type-check-pattern.cc
+       (TypeCheckPattern::visit): rewrite part code to helper function
+       (TypeCheckPattern::typecheck_range_pattern_bound): helper function
+       * typecheck/rust-hir-type-check-pattern.h
+       (TypeCheckPattern::typecheck_range_pattern_bound):
+       change the parameter of the function
+
+2024-01-16  goar5670  <mahadelr19@gmail.com>
+
+       * hir/tree/rust-hir-pattern.h (HIR::ReferencePattern):
+       added get_referenced_pattern function.
+       * resolve/rust-ast-resolve-pattern.h
+       (Resolve::PatternDeclaration): add visit function for
+       AST::ReferencePattern
+       * typecheck/rust-hir-type-check-pattern.cc
+       (Resolver::TypeCheckPattern): add visit function for
+       HIR::ReferencePattern
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * util/rust-lang-item.h
+       (RustLangItem::ItemType): New enumerators.
+       (RustLangItem::Parse): Parse new enumerators.
+       (RustLangItem::ToString): Handle new enumerators.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * backend/rust-compile-fnparam.h:
+       (CompileFnParam::visit): Add AltPattern visitor.
+       * backend/rust-compile-pattern.h:
+       (CompilePatternCaseLabelExpr::visit): Add AltPattern visitor.
+       (CompilePatternBindings::visit): Add AltPattern visitor.
+       (CompilePatternLet::visit): Add AltPattern visitor.
+       * backend/rust-compile-resolve-path.h:
+       (ResolvePathRef::visit): Add AltPattern visitor.
+       * backend/rust-compile-var-decl.h:
+       (CompileVarDecl::visit): Add AltPattern visitor.
+       * checks/errors/rust-const-checker.cc
+       (ConstChecker::visit): Add AltPattern visitor.
+       * checks/errors/rust-const-checker.h:
+       (ConstChecker::visit): Add AltPattern visitor.
+       * checks/errors/rust-unsafe-checker.cc
+       (UnsafeChecker::visit): Add AltPattern visitor.
+       * checks/errors/rust-unsafe-checker.h:
+       (UnsafeChecker::visit): Add AltPattern visitor.
+       * hir/rust-hir-dump.cc
+       (Dump::visit): Add AltPattern visitor.
+       * hir/rust-hir-dump.h:
+       (Dump::visit): Add AltPattern visitor.
+       * hir/tree/rust-hir-full-decls.h
+       (class AltPattern): Add forward declaration.
+       * hir/tree/rust-hir-pattern.h
+       (class AltPattern): New class.
+       * hir/tree/rust-hir-visitor.h:
+       (HIRFullVisitor::visit): Add AltPattern visitor.
+       (HIRFullVisitorBase::visit): Add AltPattern visitor.
+       (HIRPatternVisitor::visit): Add AltPattern visitor.
+       * hir/tree/rust-hir.h:
+       (Pattern::PatternType::ALT): New enumerator.
+       * typecheck/rust-hir-type-check-pattern.cc
+       (TypeCheckPattern::visit): Add AltPattern visitor.
+       * typecheck/rust-hir-type-check-pattern.h:
+       (TypeCheckPattern::visit): Add AltPattern visitor.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-macro.cc (builtin_macro_from_string): Add identifier
+       identification.
+       * ast/rust-macro.h (enum class): Add Stringify builtin macro
+       type.
+       * expand/rust-macro-builtins.cc (make_macro_path_str): Add path
+       for builtin stringify macro.
+       (MacroBuiltin::stringify_handler): Add handler for builtin
+       stringify macro.
+       * expand/rust-macro-builtins.h: Add stringify handler's
+       prototype.
+       * util/rust-hir-map.cc (Mappings::insert_macro_def): Add
+       stringify handler to builtin hir map.
+
+2024-01-16  Nikos Alexandris  <nikos-alexandris@protonmail.com>
+
+       * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
+               Add length checking for tuple patterns.
+       (TypeCheckPattern::emit_pattern_size_error): New function.
+       * typecheck/rust-hir-type-check-pattern.h: New function
+               emit_pattern_size_error.
+
+2024-01-16  goar5670  <mahadelr19@gmail.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_expr):
+       split LEFT_SHIFT before null_denotation.
+
+2024-01-16  Parthib  <parthibdutta02@gmail.com>
+
+       * rust-object-export.cc: Modified
+       * hir/rust-ast-lower-type.cc (rust_fatal_error): Removed
+               (rust_assert): Added
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * resolve/rust-early-name-resolver.cc
+       (EarlyNameResolver::visit):
+       Check for closure parameter without given type.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-typecheck-context.cc (TypeCheckContext::insert_resolved_predicate): remove
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * resolve/rust-ast-resolve-type.cc (ResolveRelativeQualTypePath::resolve_qual_seg): fix
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * ast/rust-path.h: add missing copy for node_id
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust-gcc.h: remove unused headers
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * ast/rust-ast.cc (QualifiedPathInType::as_string): add missing to string
+       * ast/rust-path.h: add missing copy+move constructors and assignment overloads
+       * hir/tree/rust-hir-path.h: likewise
+       * hir/tree/rust-hir.cc (QualifiedPathInType::as_string): add missing to string
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-tyty.cc (ParamType::get_name): call destructure
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-hir-trait-resolve.cc: use unify_and infer
+
+2024-01-16  goar5670  <mahadelr19@gmail.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_closure_param):
+       Replace parse_pattern with parse_pattern_no_alt.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_while_let_loop_expr):
+       Prevent hard error on token skip.
+       (Parser::null_denotation): Fix parser for while let expressions.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-builtins.cc (BuiltinsContext::setup): add memset builtin to the map
+       * backend/rust-compile-intrinsic.cc (uninit_handler): implement uninit intrinsic
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_slice_pattern): Add
+       closing square bracket check.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_external_type_item):
+       Fix compilation error due to unnecessary move.
+
+2024-01-16  Abdul Rafey  <abdulrafeyq@gmail.com>
+
+       * hir/rust-hir-dump.cc (Dump::go): support inner attrs, crate items and node mappings
+       (Dump::visit): support functions, arith/logical exprs, let stmts and literals
+
+2024-01-16  Nikos Alexandris  <nikos-alexandris@protonmail.com>
+
+       * expand/rust-macro-builtins.cc (load_file_bytes): Add location parameter.
+       (MacroBuiltin::include_bytes_handler): Pass location to load_file_bytes.
+       (MacroBuiltin::include_str_handler): Pass location to load_file_bytes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_pattern_no_alt): Handle
+       RestPattern correctly.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-pattern.h (class RestPattern): Add NodeId as well as
+       the clone_impl function.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::null_denotation): Fix if let
+       parsing.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-intrinsic.cc (op_with_overflow_inner): wraps op_with_overflow
+       (std::function<tree): likewise
+       (op_with_overflow): generate the intrinsic based on the tree_code op
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * Make-lang.in: Add rust-ast-lower-stmt.o
+       * hir/rust-ast-lower-stmt.h: Move definitions to...
+       * hir/rust-ast-lower-stmt.cc: ...here.
+
+2024-01-16  mxlol233  <mxlol233@outlook.com>
+
+       * checks/errors/rust-feature-gate.cc: Add definition
+       for `extern_types`.
+       * checks/errors/rust-feature-gate.h: Likewise.
+       * checks/errors/rust-feature.cc: Likewise.
+       * checks/errors/rust-feature.h: Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-pattern.h
+       (StructPatternElements::operator=): Clear vector before inserting.
+       (TupleStructItemsNoRange::operator=): Clear vector before inserting.
+       (TupleStructItemsRange::operator=): Clear vectors before inserting.
+       (TuplePatternItemsMultiple::operator=): Clear vector before inserting.
+       (TuplePatternItemsRanged::operator=): Clear vectors before inserting.
+       (SlicePattern::operator=): Clear vector before inserting.
+       (AltPattern::operator=): Clear vector before inserting.
+       * hir/tree/rust-hir-pattern.h
+       (StructPatternElements::operator=): Clear vector before inserting.
+       (TupleStructItemsNoRange::operator=): Clear vector before inserting.
+       (TupleStructItemsRange::operator=): Clear vectors before inserting.
+       (TuplePatternItemsMultiple::operator=): Clear vector before inserting.
+       (TuplePatternItemsRanged::operator=): Clear vectors before inserting.
+       (SlicePattern::operator=): Clear vector before inserting.
+
+2024-01-16  bl7awy  <mahadelr19@gmail.com>
+
+       * typecheck/rust-casts.cc (TypeCastRules::cast_rules): Perform destructure on `from` type.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * ast/rust-pattern.h
+       (struct StructPatternElements): Change to class.
+       (class StructPatternElements): Change from struct.
+       * hir/tree/rust-hir-pattern.h
+       (struct StructPatternElements): Change to class.
+       (class StructPatternElements): Change from struct.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * typecheck/rust-hir-type-check-pattern.cc
+       (TypeCheckPattern::visit): Improve error messages.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * hir/tree/rust-hir-pattern.h
+       (class TupleStructItemsNoRange): Fix formatting.
+       (class TupleStructItemsRange): Fix formatting.
+       (class TuplePatternItemsMultiple): Fix formatting.
+       (class TuplePatternItemsRanged): Fix formatting.
+       (class SlicePattern): Fix formatting.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * ast/rust-ast-dump.cc (Dump::visit): Add visitor.
+       * ast/rust-ast-dump.h: Add visitor prototype.
+       * ast/rust-ast-full-decls.h (class RestPattern): Add forward
+       declaration for class RestPattern.
+       * ast/rust-ast-visitor.h: Add visitor prototype.
+       * ast/rust-ast.cc (RestPattern::accept_vis): Add function to
+       accept a foreign visitor.
+       * ast/rust-pattern.h (class RestPattern): Add class RestPattern.
+       * checks/errors/rust-feature-gate.h: Add visitor prototype.
+       * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Add
+       visitor implementation.
+       * expand/rust-attribute-visitor.h: Add visitor prototype.
+       * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Add
+       visitor implementation.
+       * hir/rust-ast-lower-base.h: Add visitor prototype.
+       * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Add
+       visitor implementation.
+       * resolve/rust-ast-resolve-base.h: Add visitor prototype.
+       * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
+       Add visitor implementation.
+       * resolve/rust-early-name-resolver.h: Add visitor prototype.
+       * util/rust-attributes.cc (AttributeChecker::visit): Add visitor
+       implementation.
+       * util/rust-attributes.h: Add visitor prototype.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-tyty-cmp.h: remove
+       * typecheck/rust-tyty.cc (set_cmp_autoderef_mode): likewise
+       (reset_cmp_autoderef_mode): likewise
+       * typecheck/rust-tyty.h (set_cmp_autoderef_mode): likewise
+       (reset_cmp_autoderef_mode): likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-coercion.cc (TypeCoercionRules::Coerce): Add new try_flag
+       (TypeCoercionRules::TypeCoercionRules): set new try flag
+       (TypeCoercionRules::do_coercion): default to a final unify_and in the else case
+       (TypeCoercionRules::coerce_unsafe_ptr): cannot coerce to a ptr from ref during autoderef
+       (TypeCoercionRules::coerce_borrowed_pointer): respect coerceable mutability
+       * typecheck/rust-coercion.h: update header
+       * typecheck/rust-hir-dot-operator.cc (MethodResolver::select): use new TryCoerce interface
+       (MethodResolver::append_adjustments): ensure we maintain adjustment mappings
+       * typecheck/rust-hir-dot-operator.h: add new method append_adjustments
+       * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): extra logging
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-unify.cc (UnifyRules::go): fix inference check
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-base.h: unconsify
+       * backend/rust-compile.cc (HIRCompileBase::coercion_site): likewise
+       (HIRCompileBase::coercion_site1): likewise
+       * typecheck/rust-autoderef.cc (Adjuster::try_deref_type): likewise
+       (Adjuster::try_raw_deref_type): likewise
+       (Adjuster::try_unsize_type): likewise
+       (AutoderefCycle::cycle): likewise
+       (AutoderefCycle::try_autoderefed): likewise
+       * typecheck/rust-autoderef.h: likewise
+       * typecheck/rust-coercion.cc (TypeCoercionRules::select): likewise
+       * typecheck/rust-coercion.h: likewise
+       * typecheck/rust-hir-dot-operator.cc (MethodResolver::Probe): likewise
+       (MethodResolver::select): likewise
+       * typecheck/rust-hir-dot-operator.h: likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-unify.cc (UnifyRules::go): respect the emit_errors flag
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-casts.cc (TypeCastRules::check): update to new interface
+       * typecheck/rust-coercion.cc (TypeCoercionRules::Coerce): likewise
+       (TypeCoercionRules::TryCoerce): likewise
+       (TypeCoercionRules::TypeCoercionRules): likewise
+       * typecheck/rust-coercion.h: likewise
+       * typecheck/rust-type-util.cc (coercion_site): likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-unify.cc (UnifyRules::go): allow lhs infer vars
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * backend/rust-compile-expr.cc (CompileExpr::resolve_method_address): update to new inteface
+       * typecheck/rust-coercion.cc (TypeCoercionRules::coerce_unsafe_ptr): likewise
+       (TypeCoercionRules::coerce_borrowed_pointer): likewise
+       * typecheck/rust-hir-type-check.h: likewise
+       * typecheck/rust-type-util.cc (unify_site_and): new interface to allow for infer and commit
+       * typecheck/rust-type-util.h (unify_site_and): likewise
+       * typecheck/rust-typecheck-context.cc (TypeCheckContext::clear_type): new interface
+       * typecheck/rust-unify.cc (UnifyRules::UnifyRules): update
+       (UnifyRules::Resolve): new optional flags for commit and infer
+       (UnifyRules::go): likewise
+       (UnifyRules::expect_adt): refactor to use new interface
+       (UnifyRules::expect_reference): likewise
+       (UnifyRules::expect_pointer): likewise
+       (UnifyRules::expect_array): likewise
+       (UnifyRules::expect_slice): likewise
+       (UnifyRules::expect_fndef): likewise
+       (UnifyRules::expect_fnptr): likewise
+       (UnifyRules::expect_tuple): likewise
+       (UnifyRules::expect_closure): likewise
+       * typecheck/rust-unify.h: refactor interface
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-unify.cc (UnifyRules::Resolve): refactor
+       (UnifyRules::commit): refactor
+       * typecheck/rust-unify.h: likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * typecheck/rust-tyty.cc (ADTType::is_concrete):  need to consider if is a num_variant
+       * typecheck/rust-tyty.h: refactor to cc file
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_external_type_item):
+       Add function to parser an external type item.
+       (Parser::parse_external_item):
+       Add identification and parsing for external type items.
+       * parse/rust-parse.h:
+       Add parser_external_type_item prototype.
+
+2024-01-16  omkar-mohanty  <franzohouser@gmail.com>
+
+       * expand/rust-macro-builtins.cc
+       (MacroBuiltin::include_str_handler): eager expansion
+       (make_macro_path_str): macto to string
+       (parse_single_string_literal): check for eager invocation
+       (MacroBuiltin::assert_handler): eager expansion
+       (MacroBuiltin::include_bytes_handler): eager expansion
+       (MacroBuiltin::include_str_handler): eager expansion
+       (MacroBuiltin::compile_error_handler): eager expansion
+       (MacroBuiltin::include_handler): eager expansion
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-item.h (class Method): Add `is_default` field.
+       (class Function): Likewise.
+       * parse/rust-parse-impl.h (Parser::parse_item): Add nice error when
+       parsing `default` outside of an `impl` block
+       (Parser::parse_trait_impl_item): Allow parsing functions
+       or methods when seeing `default`.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::cast_site):
+       Remove cast_site.
+       * typecheck/rust-hir-type-check-base.h: Remove cast_site
+       prototype.
+       * typecheck/rust-type-util.cc (cast_site): Add cast_site.
+       * typecheck/rust-type-util.h (cast_site): Add cast_site
+       prototype.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-item.h: Add non-const `get_visibility` to ExternalTypeItem.
+       * ast/rust-ast-dump.cc (Dump::visit): Add implementation for ExternalTypeItem.
+       * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Likewise.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-item.h (class ExternalTypeItem): New class.
+       * ast/rust-ast.cc (ExternalTypeItem::as_string): New function.
+       (ExternalTypeItem::accept_vis): Likewise.
+       * ast/rust-ast-full-decls.h (class ExternalTypeItem): Declare class.
+       * ast/rust-ast-dump.cc (Dump::visit): Add base visitor for ExternalTypeItem.
+       * ast/rust-ast-dump.h: Likewise.
+       * ast/rust-ast-visitor.h: Likewise.
+       * checks/errors/rust-feature-gate.h: Likewise.
+       * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Likewise.
+       * expand/rust-attribute-visitor.h: Likewise.
+       * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise.
+       * hir/rust-ast-lower-base.h: Likewise.
+       * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Likewise.
+       * resolve/rust-ast-resolve-base.h: Likewise.
+       * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Likewise.
+       * resolve/rust-early-name-resolver.h: Likewise.
+       * util/rust-attributes.cc (AttributeChecker::visit): Likewise.
+       * util/rust-attributes.h: Likewise.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * expand/rust-macro-invoc-lexer.cc (MacroInvocLexer::split_current_token):
+       Add proper implementation.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * ast/rust-item.h (class Trait): Add `has_auto` field.
+       * checks/errors/rust-feature.cc: Add handling for `feature(optin_builtin_traits)`
+       * checks/errors/rust-feature.h: Likewise.
+       * lex/rust-lex.cc: Fix keyword classification using hashmap.
+       * lex/rust-token.h: Add `auto` keyword token.
+       * parse/rust-parse-impl.h (Parser::parse_vis_item): Parse auto traits
+       on `auto` keyword.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * typecheck/rust-hir-trait-resolve.cc (TraitItemReference::resolve_item):
+       Remove TypeCheckBase namespace qualifier.
+       * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::coercion_site):
+       Remove coercion_site function.
+       * typecheck/rust-hir-type-check-base.h: Remove coercion_site
+       prototype.
+       * typecheck/rust-type-util.cc (coercion_site): Add coercion_site
+       function.
+       * typecheck/rust-type-util.h (coercion_site): Add coercion_site
+       prototype.
+       * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit):
+       Remove TypeCheckBase namespace qualifier.
+       (TypeCheckMethodCallExpr::check): Remove TypeCheckBase namespace
+       qualifier.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * typecheck/rust-autoderef.cc: Remove TypeCheckBase qualifier.
+       * typecheck/rust-hir-trait-resolve.cc: Remove TypeCheckBase
+       qualifier.
+       * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::unify_site):
+       Remove unify_site.
+       * typecheck/rust-hir-type-check-base.h: Remove unify_site
+       header.
+       * typecheck/rust-hir-type-check.cc (TypeResolution::Resolve):
+       Remove TypeCheckBase qualifier.
+       * typecheck/rust-type-util.cc (unify_site): Add unify_site
+       function.
+       * typecheck/rust-type-util.h (unify_site): Add unify_site
+       prototype.
+       * typecheck/rust-tyty-call.cc (TypeCheckMethodCallExpr::check):
+       Remove TypeCheckBase qualifier.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_type): Allow LEFT_SHIFT to
+       start a type and then split it in `parse_qualified_path_type`
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * parse/rust-parse-impl.h (Parser::parse_path_generic_args): Split leading
+       `LEFT_SHIFT` token into two `LEFT_ANGLE` tokens when parsing generic arguments.
+       (Parser::parse_type_path_segment): Allow `LEFT_ANGLE` as starting token for
+       parsing generic arguments.
+
+2024-01-16  mxlol233  <mxlol233@outlook.com>
+
+       * checks/errors/rust-feature-gate.cc: Add implementations
+       for `rustc_attri`.
+       * checks/errors/rust-feature-gate.h: Likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * parse/rust-parse-impl.h
+       (Parser::parse_pattern): Add.
+       (Parser::parse_pattern_no_alt): Rename.
+       * parse/rust-parse.h:
+       (Parser::parse_pattern): Add.
+       (Parser::parse_pattern_no_alt): Rename.
+
 2024-01-04  David Malcolm  <dmalcolm@redhat.com>
 
        * lang.opt.urls: New file, autogenerated by
index ef27cf1aedfb18797448adaf0af51ad839a646c4..9cb5a9dc3ef55eee746845f84a5403c11910f242 100644 (file)
+2024-01-16  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+       PR c++/113292
+       * g++.dg/modules/pr113292_a.H: New test.
+       * g++.dg/modules/pr113292_b.C: New test.
+       * g++.dg/modules/pr113292_c.C: New test.
+
+2024-01-16  Marek Polacek  <polacek@redhat.com>
+
+       PR c++/113340
+       * g++.dg/cpp23/explicit-obj-diagnostics9.C: New test.
+
+2024-01-16  John David Anglin  <danglin@gcc.gnu.org>
+
+       * gcc.dg/pr111409.c: Add hppa*-*-hpux* to targets which do
+       not support split DWARF.
+
+2024-01-16  waffl3x  <waffl3x@protonmail.com>
+
+       PR c++/113307
+       * g++.dg/cpp23/explicit-obj-diagnostics3.C: Add test for
+       rejection of packs.
+
+2024-01-16  John David Anglin  <danglin@gcc.gnu.org>
+
+       * gcc.dg/array-quals-1.c: Add .data.rel.ro.local to read only
+       sections.
+
+2024-01-16  John David Anglin  <danglin@gcc.gnu.org>
+
+       * gcc.dg/atomic/stdatomic-flag.c: Remove xfail.
+       * gcc.dg/atomic/stdatomic-flag-2.c: Likewise.
+
+2024-01-16  John David Anglin  <danglin@gcc.gnu.org>
+
+       PR tree-optimization/110794
+       * g++.dg/pr99966.C: xfail scan-tree-dump-not throw on hppa*64*-*-*.
+
+2024-01-16  John David Anglin  <danglin@gcc.gnu.org>
+
+       * gcc.dg/c23-tag-alias-2.c: Require target lto.
+       * gcc.dg/c23-tag-alias-3.c: Likewise.
+       * gcc.dg/gnu23-tag-alias-3.c: Likewise.
+       * gcc.dg/scantest-lto.c: Likewise.
+
+2024-01-16  John David Anglin  <danglin@gcc.gnu.org>
+
+       * gcc.dg/cmp-mem-const-3.c: Skip on lp64 hppa*-*-*.
+       * gcc.dg/cmp-mem-const-4.c: Likewise.
+       * gcc.dg/cmp-mem-const-5.c: Likewise.
+       * gcc.dg/cmp-mem-const-6.c: Likewise.
+
+2024-01-16  John David Anglin  <danglin@gcc.gnu.org>
+
+       PR tree-optimization/91624
+       * gcc.dg/tree-ssa/sra-17.c: xfail all scan-tree-dump-times
+       checks on hppa*64*-*-*.
+       * gcc.dg/tree-ssa/sra-18.c: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/tuple_float_index.rs: New test.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * rust/compile/v0-mangle2.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/invalid_variadics.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/invalid_label_name.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/lifetime_name_validation.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/pattern_variadic.rs: New test.
+       * rust/execute/torture/named_variadic.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/extern_c_named_variadic.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/parse_variadic_function.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/issue-2709.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/not_a_float_literal_tuple_index.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/issue-2665.rs: New test.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * rust/compile/tupple_struct_pattern_tuple.rs: New test.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * rust/compile/v0-mangle1.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/closure_in_closure.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/macro-issue2653.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/macro57.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/macro_rules_macro_rules.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/while_break_expr.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/range_from_expr_for_loop.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/parse_item_default_macro.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/parse_generic_path_expr.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/match_break.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/parse_pub_unit_type.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/parse_global_path_generic.rs: New test.
+
+2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
+
+       * rust/compile/issue-2645.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/wrong_lhs_assignment.rs: update error message
+       * rust/compile/issue-2391.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/variadic.rs: Added new checks.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/assume.rs: New test.
+
+2024-01-16  Dave Evans  <dave@dmetwo.org>
+
+       * rust/compile/issue-2431.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/privacy6.rs: Uncomment commented out functions.
+       * rust/compile/privacy9.rs: Fix unused variables.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/privacy9.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/cfg2.rs: Updated according to new message.
+       * rust/compile/issue-2139.rs: likewise.
+       * rust/compile/issue-2190-1.rs: likewise.
+       * rust/compile/method1.rs: likewise.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/execute/torture/iter1.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/generics7.rs: Added Errorcode hint.
+       * rust/compile/generics8.rs: Updated dejagnu comment.
+       * rust/compile/issue-925.rs: Added Errorcode hint.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/issue-2029.rs:
+       Updated for dejagnu testcase.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/privacy1.rs: Added errorcode.
+       * rust/compile/privacy3.rs: likewise.
+       * rust/compile/privacy4.rs: likewise.
+       * rust/compile/privacy5.rs: likewise.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/type-if.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/let_alt.rs: Updated comment.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/iterators1.rs: this should be casting to the $ty
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/execute/torture/issue-2583.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/nested_macro_definition.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/match4.rs:
+       Updated new error commment.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/issue-1725-2.rs:
+       Updated dejagnu message.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/iterators1.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/generics13.rs:
+       for dejagnu,
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/issue-2479.rs: Updated comment.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/issue-1589.rs: Updated comment for dejagnu.
+       * rust/compile/trait-cycle.rs: New relevant test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/generics10.rs: for dejagnu.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/generics6.rs: Updated dejagnu comment.
+       * rust/compile/generics7.rs: likewise.
+       * rust/compile/issue-925.rs: likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/issue-2514.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/match5.rs:
+       Updated comment for dejagnu.
+       * rust/compile/pattern-struct.rs: New test for ICE.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/inline_2.rs: Added new message.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/auto_trait_invalid.rs:
+       Updated comment.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/bad_inner_doc.rs:
+       Updated comment to pass testcase.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/inline_2.rs: Added new case.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/bad_as_bool_char.rs:
+       Updated comment to pass test case.
+       * rust/compile/cast1.rs: likewise.
+       * rust/compile/cast4.rs: likewise.
+       * rust/compile/cast5.rs: likewise.
+       * rust/compile/all-cast.rs: New test for all error codes.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/attr_deprecated_2.rs:
+       Updated comment to pass the testcase.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/abi-options1.rs: updated comment for testcase.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/arrays2.rs: changed comment to pass
+       testcase.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * rust/compile/unicode_norm1.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/name_resolution10.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/name_resolution6.rs: New test.
+       * rust/compile/name_resolution7.rs: New test.
+       * rust/compile/name_resolution8.rs: New test.
+       * rust/compile/name_resolution9.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/undeclared_label.rs: New test for E0426.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/feature.rs: Added new unknown feature.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/arrays1.rs: changed comment to pass testcase.
+       * rust/compile/bad_type1.rs: likewise.
+       * rust/compile/bad_type2.rs: likewise.
+       * rust/compile/const_generics_6.rs: likewise.
+       * rust/compile/deadcode_err1.rs: likewise.
+       * rust/compile/deadcode_err2.rs: likewise.
+       * rust/compile/func1.rs: likewise.
+       * rust/compile/func3.rs: likewise.
+       * rust/compile/func4.rs: likewise.
+       * rust/compile/func5.rs: likewise.
+       * rust/compile/generics1.rs: likewise.
+       * rust/compile/generics2.rs: likewise.
+       * rust/compile/generics3.rs: likewise.
+       * rust/compile/implicit_returns_err1.rs: likewise.
+       * rust/compile/implicit_returns_err2.rs: likewise.
+       * rust/compile/implicit_returns_err3.rs: likewise.
+       * rust/compile/implicit_returns_err4.rs: likewise.
+       * rust/compile/issue-1152.rs: likewise.
+       * rust/compile/issue-2477.rs: likewise.
+       * rust/compile/reference1.rs: likewise.
+       * rust/compile/stmt_with_block_err1.rs: likewise.
+       * rust/compile/traits1.rs: likewise.
+       * rust/compile/traits2.rs: likewise.
+       * rust/compile/tuple_mismatch.rs: likewise.
+       * rust/compile/tuple_struct3.rs: likewise.
+       * rust/compile/mismatched-types.rs: New test from rustc.
+
+2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
+
+       * rust/compile/empty_file: New file.
+       * rust/compile/issue-2421_str.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2479.rs: New test.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * rust/compile/bad-crate-name.rs: Moved to...
+       * rust/compile/bad-crate-name1.rs: ...here.
+       * rust/compile/bad-crate-name2.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2477.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/bounds1.rs: Apply sized trait
+       * rust/compile/canonical_paths1.rs: likewise
+       * rust/compile/cast_generics.rs: likewise
+       * rust/compile/closure_no_type_anno.rs: likewise
+       * rust/compile/complex_qualified_path_in_expr.rs: likewise
+       * rust/compile/const-issue1440.rs: likewise
+       * rust/compile/const_generics_1.rs: likewise
+       * rust/compile/const_generics_8.rs: likewise
+       * rust/compile/derive_macro1.rs: likewise
+       * rust/compile/derive_macro3.rs: likewise
+       * rust/compile/derive_macro4.rs: likewise
+       * rust/compile/derive_macro6.rs: likewise
+       * rust/compile/expected_type_args2.rs: likewise
+       * rust/compile/expected_type_args3.rs: likewise
+       * rust/compile/generics1.rs: likewise
+       * rust/compile/generics11.rs: likewise
+       * rust/compile/generics12.rs: likewise
+       * rust/compile/generics2.rs: likewise
+       * rust/compile/generics3.rs: likewise
+       * rust/compile/generics4.rs: likewise
+       * rust/compile/generics6.rs: likewise
+       * rust/compile/generics7.rs: likewise
+       * rust/compile/generics8.rs: likewise
+       * rust/compile/if_let_expr.rs: likewise
+       * rust/compile/issue-1005.rs: likewise
+       * rust/compile/issue-1019.rs: likewise
+       * rust/compile/issue-1031.rs: likewise
+       * rust/compile/issue-1034.rs: likewise
+       * rust/compile/issue-1128.rs: likewise
+       * rust/compile/issue-1129-2.rs: likewise
+       * rust/compile/issue-1130.rs: likewise
+       * rust/compile/issue-1131.rs: likewise
+       * rust/compile/issue-1165.rs: likewise
+       * rust/compile/issue-1173.rs: likewise
+       * rust/compile/issue-1235.rs: likewise
+       * rust/compile/issue-1237.rs: likewise
+       * rust/compile/issue-1289.rs: likewise
+       * rust/compile/issue-1383.rs: likewise
+       * rust/compile/issue-1447.rs: likewise
+       * rust/compile/issue-1589.rs: likewise
+       * rust/compile/issue-1725-1.rs: likewise
+       * rust/compile/issue-1725-2.rs: likewise
+       * rust/compile/issue-1773.rs: likewise
+       * rust/compile/issue-1786.rs: likewise
+       * rust/compile/issue-1893.rs: likewise
+       * rust/compile/issue-1901.rs: likewise
+       * rust/compile/issue-1930.rs: likewise
+       * rust/compile/issue-1981.rs: likewise
+       * rust/compile/issue-2019-1.rs: likewise
+       * rust/compile/issue-2019-2.rs: likewise
+       * rust/compile/issue-2019-3.rs: likewise
+       * rust/compile/issue-2036.rs: likewise
+       * rust/compile/issue-2037.rs: likewise
+       * rust/compile/issue-2070.rs: likewise
+       * rust/compile/issue-2105.rs: likewise
+       * rust/compile/issue-2106.rs: likewise
+       * rust/compile/issue-2135.rs: likewise
+       * rust/compile/issue-2136-1.rs: likewise
+       * rust/compile/issue-2136-2.rs: likewise
+       * rust/compile/issue-2139.rs: likewise
+       * rust/compile/issue-2142.rs: likewise
+       * rust/compile/issue-2165.rs: likewise
+       * rust/compile/issue-2166.rs: likewise
+       * rust/compile/issue-2190-1.rs: likewise
+       * rust/compile/issue-2190-2.rs: likewise
+       * rust/compile/issue-2195.rs: likewise
+       * rust/compile/issue-2238.rs: likewise
+       * rust/compile/issue-2304.rs: likewise
+       * rust/compile/issue-850.rs: likewise
+       * rust/compile/issue-855.rs: likewise
+       * rust/compile/issue-925.rs: likewise
+       * rust/compile/macro-issue1400.rs: likewise
+       * rust/compile/macro20.rs: likewise
+       * rust/compile/macro23.rs: likewise
+       * rust/compile/macro40.rs: likewise
+       * rust/compile/macro54.rs: likewise
+       * rust/compile/name_resolution2.rs: likewise
+       * rust/compile/name_resolution4.rs: likewise
+       * rust/compile/nested_generic.rs: likewise
+       * rust/compile/parse_associated_type_as_generic_arg.rs: likewise
+       * rust/compile/parse_associated_type_as_generic_arg2.rs: likewise
+       * rust/compile/parse_associated_type_as_generic_arg3.rs: likewise
+       * rust/compile/parse_complex_generic_application.rs: likewise
+       * rust/compile/parse_complex_generic_application2.rs: likewise
+       * rust/compile/path_as_generic_arg.rs: likewise
+       * rust/compile/privacy4.rs: likewise
+       * rust/compile/privacy6.rs: likewise
+       * rust/compile/sizeof-stray-infer-var-bug.rs: likewise
+       * rust/compile/stmt_with_block_dot.rs: likewise
+       * rust/compile/torture/associated_types1.rs: likewise
+       * rust/compile/torture/forward_decl_5.rs: likewise
+       * rust/compile/torture/generics1.rs: likewise
+       * rust/compile/torture/generics10.rs: likewise
+       * rust/compile/torture/generics11.rs: likewise
+       * rust/compile/torture/generics12.rs: likewise
+       * rust/compile/torture/generics13.rs: likewise
+       * rust/compile/torture/generics14.rs: likewise
+       * rust/compile/torture/generics15.rs: likewise
+       * rust/compile/torture/generics16.rs: likewise
+       * rust/compile/torture/generics17.rs: likewise
+       * rust/compile/torture/generics18.rs: likewise
+       * rust/compile/torture/generics19.rs: likewise
+       * rust/compile/torture/generics2.rs: likewise
+       * rust/compile/torture/generics20.rs: likewise
+       * rust/compile/torture/generics21.rs: likewise
+       * rust/compile/torture/generics22.rs: likewise
+       * rust/compile/torture/generics23.rs: likewise
+       * rust/compile/torture/generics24.rs: likewise
+       * rust/compile/torture/generics25.rs: likewise
+       * rust/compile/torture/generics26.rs: likewise
+       * rust/compile/torture/generics27.rs: likewise
+       * rust/compile/torture/generics28.rs: likewise
+       * rust/compile/torture/generics29.rs: likewise
+       * rust/compile/torture/generics3.rs: likewise
+       * rust/compile/torture/generics30.rs: likewise
+       * rust/compile/torture/generics31.rs: likewise
+       * rust/compile/torture/generics32.rs: likewise
+       * rust/compile/torture/generics4.rs: likewise
+       * rust/compile/torture/generics5.rs: likewise
+       * rust/compile/torture/generics6.rs: likewise
+       * rust/compile/torture/generics7.rs: likewise
+       * rust/compile/torture/generics8.rs: likewise
+       * rust/compile/torture/generics9.rs: likewise
+       * rust/compile/torture/intrinsics-2.rs: likewise
+       * rust/compile/torture/intrinsics-6.rs: likewise
+       * rust/compile/torture/intrinsics-7.rs: likewise
+       * rust/compile/torture/intrinsics-8.rs: likewise
+       * rust/compile/torture/issue-1024.rs: likewise
+       * rust/compile/torture/issue-1075.rs: likewise
+       * rust/compile/torture/issue-1432.rs: likewise
+       * rust/compile/torture/issue-1555.rs: likewise
+       * rust/compile/torture/issue-368.rs: likewise
+       * rust/compile/torture/issue-808.rs: likewise
+       * rust/compile/torture/issue-862.rs: likewise
+       * rust/compile/torture/issue-893-2.rs: likewise
+       * rust/compile/torture/issue-893.rs: likewise
+       * rust/compile/torture/must_use2.rs: likewise
+       * rust/compile/torture/nested_fn2.rs: likewise
+       * rust/compile/torture/phantom_data.rs: likewise
+       * rust/compile/torture/range-lang-item1.rs: likewise
+       * rust/compile/torture/traits1.rs: likewise
+       * rust/compile/torture/traits11.rs: likewise
+       * rust/compile/torture/traits12.rs: likewise
+       * rust/compile/torture/traits13.rs: likewise
+       * rust/compile/torture/traits14.rs: likewise
+       * rust/compile/torture/traits15.rs: likewise
+       * rust/compile/torture/traits16.rs: likewise
+       * rust/compile/torture/traits17.rs: likewise
+       * rust/compile/torture/traits18.rs: likewise
+       * rust/compile/torture/traits19.rs: likewise
+       * rust/compile/torture/traits2.rs: likewise
+       * rust/compile/torture/traits3.rs: likewise
+       * rust/compile/torture/traits4.rs: likewise
+       * rust/compile/torture/traits5.rs: likewise
+       * rust/compile/torture/traits6.rs: likewise
+       * rust/compile/torture/traits7.rs: likewise
+       * rust/compile/torture/traits8.rs: likewise
+       * rust/compile/torture/traits9.rs: likewise
+       * rust/compile/torture/transmute-size-check-1.rs: likewise
+       * rust/compile/torture/transmute1.rs: likewise
+       * rust/compile/torture/uninit-intrinsic-1.rs: likewise
+       * rust/compile/torture/utf8_identifiers.rs: likewise
+       * rust/compile/traits1.rs: likewise
+       * rust/compile/traits10.rs: likewise
+       * rust/compile/traits11.rs: likewise
+       * rust/compile/traits12.rs: likewise
+       * rust/compile/traits2.rs: likewise
+       * rust/compile/traits3.rs: likewise
+       * rust/compile/traits4.rs: likewise
+       * rust/compile/traits5.rs: likewise
+       * rust/compile/traits6.rs: likewise
+       * rust/compile/traits7.rs: likewise
+       * rust/compile/traits8.rs: likewise
+       * rust/compile/traits9.rs: likewise
+       * rust/compile/type-bindings1.rs: likewise
+       * rust/compile/unconstrained_type_param.rs: likewise
+       * rust/compile/unsafe10.rs: likewise
+       * rust/execute/torture/closure1.rs: likewise
+       * rust/execute/torture/closure2.rs: likewise
+       * rust/execute/torture/closure3.rs: likewise
+       * rust/execute/torture/closure4.rs: likewise
+       * rust/execute/torture/coercion1.rs: likewise
+       * rust/execute/torture/coercion2.rs: likewise
+       * rust/execute/torture/coercion3.rs: likewise
+       * rust/execute/torture/copy_nonoverlapping1.rs: likewise
+       * rust/execute/torture/derive_macro1.rs: likewise
+       * rust/execute/torture/derive_macro3.rs: likewise
+       * rust/execute/torture/derive_macro4.rs: likewise
+       * rust/execute/torture/index1.rs: likewise
+       * rust/execute/torture/issue-1120.rs: likewise
+       * rust/execute/torture/issue-1133.rs: likewise
+       * rust/execute/torture/issue-1198.rs: likewise
+       * rust/execute/torture/issue-1232.rs: likewise
+       * rust/execute/torture/issue-1249.rs: likewise
+       * rust/execute/torture/issue-1436.rs: likewise
+       * rust/execute/torture/issue-1496.rs: likewise
+       * rust/execute/torture/issue-1720-2.rs: likewise
+       * rust/execute/torture/issue-1720.rs: likewise
+       * rust/execute/torture/issue-2052.rs: likewise
+       * rust/execute/torture/issue-2179.rs: likewise
+       * rust/execute/torture/issue-2180.rs: likewise
+       * rust/execute/torture/issue-2236.rs: likewise
+       * rust/execute/torture/issue-647.rs: likewise
+       * rust/execute/torture/issue-845.rs: likewise
+       * rust/execute/torture/issue-851.rs: likewise
+       * rust/execute/torture/issue-858.rs: likewise
+       * rust/execute/torture/macros23.rs: likewise
+       * rust/execute/torture/macros28.rs: likewise
+       * rust/execute/torture/method2.rs: likewise
+       * rust/execute/torture/method3.rs: likewise
+       * rust/execute/torture/method4.rs: likewise
+       * rust/execute/torture/operator_overload_1.rs: likewise
+       * rust/execute/torture/operator_overload_10.rs: likewise
+       * rust/execute/torture/operator_overload_11.rs: likewise
+       * rust/execute/torture/operator_overload_12.rs: likewise
+       * rust/execute/torture/operator_overload_2.rs: likewise
+       * rust/execute/torture/operator_overload_3.rs: likewise
+       * rust/execute/torture/operator_overload_4.rs: likewise
+       * rust/execute/torture/operator_overload_5.rs: likewise
+       * rust/execute/torture/operator_overload_6.rs: likewise
+       * rust/execute/torture/operator_overload_7.rs: likewise
+       * rust/execute/torture/operator_overload_8.rs: likewise
+       * rust/execute/torture/operator_overload_9.rs: likewise
+       * rust/execute/torture/prefetch_data.rs: likewise
+       * rust/execute/torture/ref-pattern2.rs: likewise
+       * rust/execute/torture/slice-magic.rs: likewise
+       * rust/execute/torture/slice-magic2.rs: likewise
+       * rust/execute/torture/slice1.rs: likewise
+       * rust/execute/torture/str-layout1.rs: likewise
+       * rust/execute/torture/trait1.rs: likewise
+       * rust/execute/torture/trait10.rs: likewise
+       * rust/execute/torture/trait11.rs: likewise
+       * rust/execute/torture/trait12.rs: likewise
+       * rust/execute/torture/trait13.rs: likewise
+       * rust/execute/torture/trait2.rs: likewise
+       * rust/execute/torture/trait3.rs: likewise
+       * rust/execute/torture/trait4.rs: likewise
+       * rust/execute/torture/trait5.rs: likewise
+       * rust/execute/torture/trait6.rs: likewise
+       * rust/execute/torture/trait7.rs: likewise
+       * rust/execute/torture/trait8.rs: likewise
+       * rust/execute/torture/trait9.rs: likewise
+       * rust/execute/torture/transmute1.rs: likewise
+       * rust/execute/torture/wrapping_op1.rs: likewise
+       * rust/execute/torture/wrapping_op2.rs: likewise
+       * rust/link/generic_function_0.rs: likewise
+       * rust/link/generic_function_1.rs: likewise
+       * rust/compile/issue-2375.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/non_member_const.rs: add missing error message
+       * rust/compile/issue-2478.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/break2.rs: Modified file to pass test case.
+       * rust/compile/break_with_value_inside_loop.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/proc_macro_attribute_non_root_function.rs: New test.
+       * rust/compile/proc_macro_attribute_non_root_method.rs: New test.
+       * rust/compile/proc_macro_attribute_non_root_module.rs: New test.
+       * rust/compile/proc_macro_derive_non_root_function.rs: New test.
+       * rust/compile/proc_macro_derive_non_root_method.rs: New test.
+       * rust/compile/proc_macro_derive_non_root_module.rs: New test.
+       * rust/compile/proc_macro_non_root_function.rs: New test.
+       * rust/compile/proc_macro_non_root_method.rs: New test.
+       * rust/compile/proc_macro_non_root_module.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/proc_macro_pub_function.rs: New test.
+       * rust/compile/proc_macro_pub_module.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/proc_macro_attribute_crate_type.rs: Replace
+       dg-excess-errors with dg-error and fix the line so the test
+       can pass.
+       * rust/compile/proc_macro_crate_type.rs: Likewise.
+       * rust/compile/proc_macro_derive_crate_type.rs: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/proc_macro_attribute_private.rs: New test.
+       * rust/compile/proc_macro_derive_private.rs: New test.
+       * rust/compile/proc_macro_private.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/proc_macro_derive_non_function.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/proc_macro_attribute_non_function.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/proc_macro_non_function.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/abi-vardaic.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/non_member_const.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/break1.rs: Modified to pass test case.
+       * rust/compile/continue1.rs: likewise.
+       * rust/compile/break_continue_outside_loop.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/proc_macro_derive_malformed.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/proc_macro_attribute_crate_type.rs: New test.
+       * rust/compile/proc_macro_crate_type.rs: New test.
+       * rust/compile/proc_macro_derive_crate_type.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/found_struct.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/changed_intrinsics.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/torture/intrinsics-3.rs: Updated comment to pass the test case.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/bad_pub_enumitems.rs: changed comment to pass test cases.
+       * rust/compile/dup_fields.rs: likewise.
+       * rust/execute/same_field_name.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/wrong_lhs_assignment.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/func2.rs: updated comment to pass new test cases.
+       * rust/compile/tuple_struct2.rs: likewise.
+       * rust/compile/wrong_no_of_parameters.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+           GuillaumeGomez  <guillaume1.gomez@gmail.com>
+
+       * rust/compile/name_resolution1.rs: New test.
+       * rust/compile/name_resolution2.rs: New test.
+       * rust/compile/name_resolution3.rs: New test.
+       * rust/compile/name_resolution4.rs: New test.
+       * rust/compile/name_resolution5.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/link/trait_import_0.rs: Mark test as xfail.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/break-rust2.rs: Updated comment to pass testcase.
+       * rust/compile/const_generics_3.rs: likewise.
+       * rust/compile/const_generics_4.rs: likewise.
+       * rust/compile/not_find_value_in_scope.rs: New test.
+
+2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
+
+       * rust/compile/missing_constructor_fields.rs: New test.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * rust/compile/broken_utf8.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/macro-issue2273.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2105.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/rust_abi.rs: New test.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * rust/compile/bytecharstring.rs:add test for it
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/macro56.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-1981.rs: Fix badly copied libcore code test
+       * rust/compile/issue-2330.rs: New test.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * rust/compile/torture/raw_identifiers.rs: New test.
+       * rust/compile/torture/utf8_identifiers.rs: New test.
+
+2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
+
+       * rust/compile/torture/utf8_whitespaces.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/macro-issue2268.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/macro-issue2264.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2304.rs: New test.
+
+2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
+
+       * rust/compile/macro54.rs: New test.
+       * rust/compile/macro55.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-1893.rs: fully compile the test case
+
+2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
+
+       * rust/compile/braced_macro_arm.rs: New test.
+       * rust/compile/braced_macro_statements1.rs: New test.
+       * rust/compile/braced_macro_statements2.rs: New test.
+       * rust/compile/braced_macro_statements3.rs: New test.
+       * rust/compile/issue-2225.rs: Update test.
+       * rust/compile/macro53.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/macro6.rs: Remove check for direct error.
+       * rust/compile/macro7.rs: Likewise.
+       * rust/compile/macro-issue2229.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2036.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2019-2.rs: New test.
+       * rust/compile/issue-2019-3.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2019-1.rs: New test.
+
+2024-01-16  Dave Evans  <dave@dmetwo.org>
+
+       * rust/compile/issue-1813.rs: New test.
+
+2024-01-16  TieWay59  <tieway59@foxmail.com>
+
+       * rust/compile/break1.rs: remove dg-error "failed to type resolve expression"
+       * rust/compile/break2.rs: Likewise
+       * rust/compile/cfg2.rs: Likewise
+       * rust/compile/continue1.rs: Likewise
+       * rust/compile/generics4.rs: Likewise
+       * rust/compile/generics6.rs: Likewise
+       * rust/compile/generics7.rs: Likewise
+       * rust/compile/issue-2029.rs: Likewise
+       * rust/compile/issue-2139.rs: Likewise
+       * rust/compile/issue-2190-1.rs: Likewise
+       * rust/compile/issue-925.rs: Likewise
+       * rust/compile/method1.rs: Likewise
+       * rust/compile/shadow1.rs: Likewise
+       * rust/compile/type-bindings1.rs: Likewise
+       * rust/compile/unary_negation.rs: Likewise
+       * rust/compile/unary_not.rs: Likewise
+       * rust/compile/unconstrained_type_param.rs: Likewise
+       * rust/compile/usize1.rs: Likewise
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/traits2.rs: update error message
+       * rust/compile/traits3.rs: update error message
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/derive_empty.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/test_mod.rs: Moved to...
+       * rust/compile/issue-1089/test_mod.rs: ...here.
+       * rust/compile/mod_missing_middle.rs: Fix paths.
+       * rust/compile/missing_middle/both_path.rs: Moved to...
+       * rust/compile/mod_missing_middle/missing_middle/both_path.rs: ...here.
+       * rust/compile/missing_middle/explicit.not.rs: Moved to...
+       * rust/compile/mod_missing_middle/missing_middle/explicit.not.rs: ...here.
+       * rust/compile/missing_middle/other.rs: Moved to...
+       * rust/compile/mod_missing_middle/missing_middle/explicit.not/other.rs: ...here.
+       * rust/compile/missing_middle/inner_path.rs: Moved to...
+       * rust/compile/mod_missing_middle/missing_middle/inner_path.rs: ...here.
+       * rust/compile/missing_middle/outer_path.rs: Moved to...
+       * rust/compile/mod_missing_middle/missing_middle/outer_path.rs: ...here.
+       * rust/compile/missing_middle/sub/mod.rs: Moved to...
+       * rust/compile/mod_missing_middle/missing_middle/sub/mod.rs: ...here.
+       * rust/compile/torture/modules/mod.rs: Moved to...
+       * rust/compile/torture/extern_mod1/modules/mod.rs: ...here.
+       * rust/execute/torture/modules/mod.rs: Moved to...
+       * rust/execute/torture/extern_mod4/modules/mod.rs: ...here.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/derive_macro8.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2165.rs: New test.
+       * rust/compile/issue-2166.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/struct-expr-parse.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/derive_macro7.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/derive_macro4.rs: New test.
+       * rust/compile/derive_macro6.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/execute/torture/derive_macro4.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/macro-delim.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/macro43.rs: Fix test with new derive macros.
+       * rust/compile/derive_macro1.rs: New test.
+       * rust/compile/derive_macro3.rs: New test.
+       * rust/execute/torture/derive_macro1.rs: New test.
+       * rust/execute/torture/derive_macro3.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/cfg6.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2195.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2238.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/issue-2225.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/issue-2207.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/execute/torture/issue-2236.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2190-1.rs: New test.
+       * rust/compile/issue-2190-2.rs: New test.
+
+2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
+
+       * rust/compile/nested_macro_use3.rs: New test.
+
+2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
+
+       * rust/compile/cfg-attr.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/doc_macro.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/macro-issue2194.rs: New test.
+
+2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
+
+       * rust/compile/for_expr.rs: New test.
+       * rust/compile/issue-407-2.rs: Update compiler output.
+       * rust/compile/issue-407.rs: Update compiler output.
+       * rust/compile/issue-867.rs: Update compiler output.
+       * rust/compile/issue-2189.rs: New test.
+       * rust/compile/macro_call_statement.rs: New test.
+       * rust/compile/stmt_with_block_dot.rs: New test.
+       * rust/compile/torture/loop8.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/macro-issue2192.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/const-issue1440.rs: Remove LE conditional compilation.
+       * rust/compile/torture/issue-1432.rs: Likewise.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/execute/torture/coercion3.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/execute/torture/issue-2179.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/execute/torture/issue-2180.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2188.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/parse_specialization.rs:
+       Add "default unsafe" coverage.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2178.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/macro_use1.rs: New test.
+       * rust/execute/torture/macro_use1.rs: New test.
+       * rust/compile/nested_macro_use1.rs: New test.
+       * rust/compile/nested_macro_use2.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/issue-1446.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/execute/torture/cfg-tail.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/macro52.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/issue-2125.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2135.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2106.rs: New test.
+       * rust/compile/issue-1524.rs: regression (placeholder generic)
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2142.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2136-1.rs: New test.
+       * rust/compile/issue-2136-2.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2139.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-1893.rs: regression
+       * rust/compile/traits12.rs: rustc uses a custom error message here
+       * rust/compile/unconstrained_type_param.rs: extra error message
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/execute/torture/issue-1852-1.rs: New test.
+       * rust/execute/torture/issue-1852.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/issue-1807.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/let_alt.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-852.rs: New test.
+
+2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>
+
+       * lib/prune.exp (prune_ices):
+       Also prune "You have broken GCC Rust. This is a feature."
+       * rust/compile/break-rust1.rs: New test
+       * rust/compile/break-rust2.rs: New test
+       * rust/compile/break-rust3.rs: New test
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/if_let_expr.rs: Increase test coverage.
+
+2024-01-16  Sebastian Kirmayer  <gnu@kirmayer.eu>
+
+       * rust/compile/macro-issue2092.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/macro51.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2070.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/execute/torture/issue-2080.rs: New test.
+
+2024-01-16  Emanuele Micheletti  <micheletti.emanuele@hotmail.com>
+
+       * rust/compile/cast5.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/const_generics_5.rs: update test case
+       * rust/compile/issue-2043.rs: New test.
+       * rust/compile/issue-2039.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2042.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-925.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/bounds1.rs: Moved to...
+       * rust/compile/bounds1.rs: ...here.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2029.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/execute/torture/issue-2052.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/array4.rs: New test.
+       * rust/execute/torture/arrays.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/privacy8.rs: New test.
+
+2024-01-16  emanuele-em  <micheletti.emanuele@hotmail.com>
+
+       * rust/compile/cast4.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/macro49.rs: New test.
+       * rust/compile/macro50.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-2037.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-1893.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-850.rs: New test.
+       * rust/compile/issue-855.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-1981.rs: New test.
+
+2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
+
+       * rust/compile/torture/alt_patterns1.rs: New test.
+
+2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
+
+       * rust/compile/multiple_bindings2.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/sizeof-stray-infer-var-bug.rs: New test.
+
+2024-01-16  Tage Johansson  <frans.tage@gmail.com>
+
+       * rust/compile/macro47.rs: Test that :vis can be followed by some keywords
+       * rust/compile/macro48.rs: Test that :vis cannot be followed by the keyword priv
+
+2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
+
+       * rust/compile/multiple_bindings1.rs: New test.
+
+2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
+
+       * rust/execute/torture/closure4.rs: New test.
+       * rust/execute/torture/ref-pattern2.rs: New test.
+
+2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
+
+       * rust/compile/ref_pattern_fn_param.rs: Moved to...
+       * rust/compile/ref_pattern_fn_param1.rs: ...here.
+       * rust/compile/ref_pattern_fn_param2.rs: New test.
+       * rust/execute/torture/ref-pattern1.rs: New test.
+
+2024-01-16  goar5670  <mahadelr19@gmail.com>
+
+       * rust/compile/ref_pattern_fn_param.rs: New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/lang-impl.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/stringify.rs: Add a basic test with some text.
+       * rust/execute/torture/builtin_macro_stringify.rs: Verify the
+       text is left as is without any other macro expansion.
+
+2024-01-16  Nikos Alexandris  <nikos-alexandris@protonmail.com>
+
+       * rust/compile/tuple_mismatch.rs: New test.
+
+2024-01-16  goar5670  <mahadelr19@gmail.com>
+
+       * rust/compile/complex_qualified_path_in_expr.rs : New test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/closure_no_type_anno.rs: Extend test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-1524.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/parse_associated_type_as_generic_arg3.rs: remove -fsyntax-only
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/parse_associated_type_as_generic_arg.rs: it now works without -fsyntax-only
+       * rust/compile/parse_associated_type_as_generic_arg2.rs: likewise
+
+2024-01-16  goar5670  <mahadelr19@gmail.com>
+
+       * rust/compile/closure_no_type_anno.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/while_let_expr.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/torture/uninit-intrinsic-1.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/zero_sized_slice.rs: New test.
+
+2024-01-16  Nikos Alexandris  <nikos-alexandris@protonmail.com>
+
+       * rust/compile/builtin_macro_include_bytes_location_info.rs: New test.
+       * rust/compile/builtin_macro_include_str_location_info.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/slice_rest_pattern.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/if_let_expr.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/torture/intrinsics-8.rs: New test.
+
+2024-01-16  mxlol233  <mxlol233@outlook.com>
+
+       * rust/compile/feature_extern_types.rs:New file.
+
+2024-01-16  bl7awy  <mahadelr19@gmail.com>
+
+       * rust/compile/cast_generics.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-1901.rs: New test.
+
+2024-01-16  Philip Herron  <herron.philip@googlemail.com>
+
+       * rust/compile/issue-1930.rs: New test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/extern_type_item_missing_semi.rs: New failing
+       test.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * rust/compile/extern_type_item.rs: New test.
+
+2024-01-16  omkar-mohanty  <franzohouser@gmail.com>
+
+       * rust/compile/builtin_macro_eager3.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/parse_invalid_specialization.rs: New test.
+       * rust/compile/parse_specialization.rs: New test.
+       * rust/compile/default_not_a_kw.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/expand_macro_qual_path_in_type.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/auto_trait_invalid.rs: New test.
+       * rust/compile/auto_trait_valid.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/parse_associated_type_as_generic_arg3.rs: New test.
+
+2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+       * rust/compile/parse_associated_type_as_generic_arg.rs: New test.
+       * rust/compile/parse_associated_type_as_generic_arg2.rs: New test.
+       * rust/compile/path_as_generic_arg.rs: New test.
+       * rust/compile/nested_generic.rs: New test.
+
+2024-01-16  mxlol233  <mxlol233@outlook.com>
+
+       * rust/compile/builtin_macro_compile_error.rs: Add
+       crate feature `rustc_attri`.
+       * rust/compile/builtin_macro_concat.rs: Likewise.
+       * rust/compile/builtin_macro_eager1.rs: Likewise.
+       * rust/compile/builtin_macro_eager2.rs: Likewise.
+       * rust/compile/builtin_macro_env.rs: Likewise.
+       * rust/compile/builtin_macro_include_bytes.rs:
+       Likewise.
+       * rust/compile/builtin_macro_include_str.rs:
+       Likewise.
+       * rust/compile/builtin_macro_not_found.rs:
+       Likewise.
+       * rust/compile/builtin_macro_recurse2.rs:
+       Likewise.
+       * rust/compile/feature_rust_attri0.rs:New file.
+       * rust/compile/feature_rust_attri1.rs:New file.
+       * rust/compile/include_empty.rs:Add crate feature
+       `rustc_attri`.
+       * rust/compile/issue-1830_bytes.rs:Likewise.
+       * rust/compile/issue-1830_str.rs:Likewise.
+       * rust/compile/macro42.rs:Likewise.
+       * rust/execute/torture/builtin_macro_cfg.rs:
+       Likewise.
+       * rust/execute/torture/builtin_macro_concat.rs:
+       Likewise.
+       * rust/execute/torture/builtin_macro_env.rs:
+       Likewise.
+       * rust/execute/torture/builtin_macro_include_bytes.rs:
+       Likewise.
+       * rust/execute/torture/builtin_macro_include_str.rs:
+       Likewise.
+       * rust/execute/torture/builtin_macro_line.rs:
+       Likewise.
+       * rust/execute/torture/builtin_macros1.rs:
+       Likewise.
+       * rust/execute/torture/builtin_macros3.rs:
+       Likewise.
+       * rust/execute/torture/macros29.rs:Likewise.
+       * rust/execute/torture/macros30.rs:Likewise.
+       * rust/execute/torture/macros31.rs:Likewise.
+
+2024-01-16  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+
+       PR target/112573
+       * gcc.target/aarch64/pr112573.c: Add new test.
+
+2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
+
+       * rust/compile/pattern-or.rs: New test.
+
+2024-01-16  Daniel Cederman  <cederman@gaisler.com>
+
+       * gcc.dg/lto/pr88077_0.c: Change type to match alignment for SPARC
+
+2024-01-16  Daniel Cederman  <cederman@gaisler.com>
+
+       * gcc.dg/ifcvt-4.c: Skip for SPARC V8
+
+2024-01-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/113372
+       PR middle-end/90348
+       PR middle-end/110115
+       PR middle-end/111422
+       * gcc.dg/torture/bitint-49.c: New test.
+       * gcc.c-torture/execute/pr90348.c: New test.
+       * gcc.c-torture/execute/pr110115.c: New test.
+       * gcc.c-torture/execute/pr111422.c: New test.
+
+2024-01-16  Feng Xue  <fxue@os.amperecomputing.com>
+
+       * gcc.target/aarch64/bb-slp-pr113091.c: New test.
+
+2024-01-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
+
+       PR target/113404
+       * gcc.target/riscv/rvv/base/big_endian-1.c: New test.
+       * gcc.target/riscv/rvv/base/big_endian-2.c: New test.
+
+2024-01-16  Kewen Lin  <linkw@linux.ibm.com>
+
+       PR testsuite/109705
+       * lib/target-supports.exp (check_effective_target_vect_long_mult):
+       Fix powerpc*-*-* checks.
+
+2024-01-16  Yanzhang Wang  <yanzhang.wang@intel.com>
+
+       * gcc.target/riscv/rvv/base/abi-call-args-1-run.c: Delete the
+       -Wno-psabi.
+       * gcc.target/riscv/rvv/base/abi-call-args-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-call-args-2-run.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-call-args-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-call-args-3-run.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-call-args-3.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-call-args-4-run.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-call-args-4.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-call-error-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-call-return-run.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-call-return.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-call-variant_cc.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-callee-saved-1-save-restore.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-callee-saved-1-zcmp.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-callee-saved-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-callee-saved-2-save-restore.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-callee-saved-2-zcmp.c: Ditto.
+       * gcc.target/riscv/rvv/base/abi-callee-saved-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/fixed-point-vxrm-error.c: Ditto.
+       * gcc.target/riscv/rvv/base/fixed-point-vxrm.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-cvt-f.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-cvt-x.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-cvt-xu.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-10.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-11.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-12.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-13.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-14.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-15.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-16.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-17.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-18.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-19.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-20.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-21.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-22.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-23.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-24.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-25.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-26.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-27.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-28.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-29.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-3.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-30.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-31.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-32.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-33.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-34.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-35.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-36.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-37.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-38.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-39.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-4.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-40.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-41.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-42.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-43.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-44.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-45.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-46.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-47.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-48.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-49.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-5.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-50.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-51.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-52.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-53.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-54.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-55.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-56.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-57.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-58.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-59.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-6.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-60.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-61.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-62.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-63.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-64.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-65.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-66.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-67.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-68.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-7.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-72.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-73.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-74.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-75.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-76.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-77.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-8.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-dynamic-frm-9.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-autovec-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-autovec-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-autovec-3.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-autovec-4.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-error.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-insert-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-insert-10.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-insert-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-insert-3.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-insert-4.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-insert-5.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-insert-7.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-insert-8.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-insert-9.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-run-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-run-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-run-3.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-run-4.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm-run-5.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-frm.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-fwmacc.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-macc.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-madd.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-msac.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-msub.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-ncvt-f.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-ncvt-x.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-ncvt-xu.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-nmacc.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-nmadd.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-nmsac.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-nmsub.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-rec7.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-redosum.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-redusum.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-single-div.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-single-mul.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-single-rdiv.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-single-rsub.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-single-sub.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-sqrt.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-wcvt-x.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-wcvt-xu.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-widening-add.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-widening-mul.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-widening-sub.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-wmsac.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-wnmacc.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-wnmsac.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-wredosum.c: Ditto.
+       * gcc.target/riscv/rvv/base/float-point-wredusum.c: Ditto.
+       * gcc.target/riscv/rvv/base/intrisinc-vrgatherei16.c: Ditto.
+       * gcc.target/riscv/rvv/base/no-honor-frm-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/overloaded_rv32_vadd.c: Ditto.
+       * gcc.target/riscv/rvv/base/overloaded_rv32_vfadd.c: Ditto.
+       * gcc.target/riscv/rvv/base/overloaded_rv32_vget_vset.c: Ditto.
+       * gcc.target/riscv/rvv/base/overloaded_rv32_vloxseg2ei16.c: Ditto.
+       * gcc.target/riscv/rvv/base/overloaded_rv32_vmv.c: Ditto.
+       * gcc.target/riscv/rvv/base/overloaded_rv32_vreinterpret.c: Ditto.
+       * gcc.target/riscv/rvv/base/overloaded_rv64_vadd.c: Ditto.
+       * gcc.target/riscv/rvv/base/overloaded_rv64_vfadd.c: Ditto.
+       * gcc.target/riscv/rvv/base/overloaded_rv64_vget_vset.c: Ditto.
+       * gcc.target/riscv/rvv/base/overloaded_rv64_vloxseg2ei16.c: Ditto.
+       * gcc.target/riscv/rvv/base/overloaded_rv64_vmv.c: Ditto.
+       * gcc.target/riscv/rvv/base/overloaded_rv64_vreinterpret.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr110119-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr110119-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr110265-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr110265-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr110265-3.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr110277-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr110277-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr110299-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr110299-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr110299-3.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr110299-4.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr111720-0.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr111720-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr111720-10.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr111720-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr111720-3.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr111720-4.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr111720-5.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr111720-6.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr111720-7.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr111720-8.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr111720-9.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr111935.c: Ditto.
+       * gcc.target/riscv/rvv/base/scalar-move-merged-run-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/simplify-vdiv.c: Ditto.
+       * gcc.target/riscv/rvv/base/simplify-vrsub.c: Ditto.
+       * gcc.target/riscv/rvv/base/tuple-intrinsic.c: Ditto.
+       * gcc.target/riscv/rvv/base/tuple_vundefined.c: Ditto.
+       * gcc.target/riscv/rvv/base/vcreate.c: Ditto.
+       * gcc.target/riscv/rvv/base/vlmul_ext-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/vslide1down-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/vslide1down-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/vslide1down-3.c: Ditto.
+       * gcc.target/riscv/rvv/base/vslide1up-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/vslide1up-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/vslide1up-3.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvbb-intrinsic.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvbb_vandn_vx_constraint.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvbc-intrinsic.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvbc_vx_constraint-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvbc_vx_constraint-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvfhmin-intrinsic.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvkg-intrinsic.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvkned-intrinsic.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvknha-intrinsic.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvknhb-intrinsic.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvksed-intrinsic.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvksh-intrinsic.c: Ditto.
+
+2024-01-16  Yanzhang Wang  <yanzhang.wang@intel.com>
+
+       * gcc.target/riscv/rvv/base/binop_vx_constraint-120.c: Delete the -Wno-psabi.
+       * gcc.target/riscv/rvv/base/integer_compare_insn_shortcut.c: Ditto.
+       * gcc.target/riscv/rvv/base/mask_insn_shortcut.c: Ditto.
+       * gcc.target/riscv/rvv/base/misc_vreinterpret_vbool_vint.c: Ditto.
+       * gcc.target/riscv/rvv/base/pr110109-2.c: Ditto.
+       * gcc.target/riscv/rvv/base/scalar_move-9.c: Ditto.
+       * gcc.target/riscv/rvv/base/spill-10.c: Ditto.
+       * gcc.target/riscv/rvv/base/spill-11.c: Ditto.
+       * gcc.target/riscv/rvv/base/spill-9.c: Ditto.
+       * gcc.target/riscv/rvv/base/vlmul_ext-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/zero_base_load_store_optimization.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvfh-intrinsic.c: Ditto.
+       * gcc.target/riscv/rvv/base/zvfh-over-zvfhmin.c: Ditto.
+       * gcc.target/riscv/rvv/vsetvl/vsetvl-1.c: Ditto.
+       * gcc.target/riscv/rvv/base/vector-abi-1.c: Removed.
+       * gcc.target/riscv/rvv/base/vector-abi-2.c: Removed.
+       * gcc.target/riscv/rvv/base/vector-abi-3.c: Removed.
+       * gcc.target/riscv/rvv/base/vector-abi-4.c: Removed.
+       * gcc.target/riscv/rvv/base/vector-abi-5.c: Removed.
+       * gcc.target/riscv/rvv/base/vector-abi-6.c: Removed.
+       * gcc.target/riscv/rvv/base/vector-abi-7.c: Removed.
+       * gcc.target/riscv/rvv/base/vector-abi-8.c: Removed.
+
 2024-01-16  David Malcolm  <dmalcolm@redhat.com>
 
        PR analyzer/106229
index fa9e21040316c1b79de4cc71768e00767eecb63a..06974682ae7ac391dd8cdde3282ff05d909ed2f1 100644 (file)
@@ -1,3 +1,679 @@
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro_internal/proc_macro.h (enum ProcmacroTag): Add
+       explicit value for proc macro tag enum.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/bridge.rs: Add license text.
+       * libproc_macro/bridge/ffistring.rs: Likewise.
+       * libproc_macro/bridge/group.rs: Likewise.
+       * libproc_macro/bridge/ident.rs: Likewise.
+       * libproc_macro/bridge/literal.rs: Likewise.
+       * libproc_macro/bridge/punct.rs: Likewise.
+       * libproc_macro/bridge/span.rs: Likewise.
+       * libproc_macro/bridge/token_stream.rs: Likewise.
+       * libproc_macro/group.rs: Likewise.
+       * libproc_macro/ident.rs: Likewise.
+       * libproc_macro/lib.rs: Likewise.
+       * libproc_macro/literal.rs: Likewise.
+       * libproc_macro/punct.rs: Likewise.
+       * libproc_macro/span.rs: Likewise.
+       * libproc_macro/token_stream.rs: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro_internal/rust/bridge.rs: Moved to...
+       * libproc_macro/bridge.rs: ...here.
+       * libproc_macro_internal/rust/bridge/ffistring.rs: Moved to...
+       * libproc_macro/bridge/ffistring.rs: ...here.
+       * libproc_macro_internal/rust/bridge/group.rs: Moved to...
+       * libproc_macro/bridge/group.rs: ...here.
+       * libproc_macro_internal/rust/bridge/ident.rs: Moved to...
+       * libproc_macro/bridge/ident.rs: ...here.
+       * libproc_macro_internal/rust/bridge/literal.rs: Moved to...
+       * libproc_macro/bridge/literal.rs: ...here.
+       * libproc_macro_internal/rust/bridge/punct.rs: Moved to...
+       * libproc_macro/bridge/punct.rs: ...here.
+       * libproc_macro_internal/rust/bridge/span.rs: Moved to...
+       * libproc_macro/bridge/span.rs: ...here.
+       * libproc_macro_internal/rust/bridge/token_stream.rs: Moved to...
+       * libproc_macro/bridge/token_stream.rs: ...here.
+       * libproc_macro_internal/rust/group.rs: Moved to...
+       * libproc_macro/group.rs: ...here.
+       * libproc_macro_internal/rust/ident.rs: Moved to...
+       * libproc_macro/ident.rs: ...here.
+       * libproc_macro_internal/rust/lib.rs: Moved to...
+       * libproc_macro/lib.rs: ...here.
+       * libproc_macro_internal/rust/literal.rs: Moved to...
+       * libproc_macro/literal.rs: ...here.
+       * libproc_macro_internal/rust/punct.rs: Moved to...
+       * libproc_macro/punct.rs: ...here.
+       * libproc_macro_internal/rust/span.rs: Moved to...
+       * libproc_macro/span.rs: ...here.
+       * libproc_macro_internal/rust/token_stream.rs: Moved to...
+       * libproc_macro/token_stream.rs: ...here.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Makefile.am: Change library name.
+       * Makefile.in: Likewise.
+       * configure.ac: Likewise.
+       * configure: Regenerate.
+       * libproc_macro/Makefile.am: Moved to...
+       * libproc_macro_internal/Makefile.am: ...here.
+       * libproc_macro/Makefile.in: Moved to...
+       * libproc_macro_internal/Makefile.in: ...here.
+       * libproc_macro/bridge.h: Moved to...
+       * libproc_macro_internal/bridge.h: ...here.
+       * libproc_macro/ffistring.cc: Moved to...
+       * libproc_macro_internal/ffistring.cc: ...here.
+       * libproc_macro/ffistring.h: Moved to...
+       * libproc_macro_internal/ffistring.h: ...here.
+       * libproc_macro/group.cc: Moved to...
+       * libproc_macro_internal/group.cc: ...here.
+       * libproc_macro/group.h: Moved to...
+       * libproc_macro_internal/group.h: ...here.
+       * libproc_macro/ident.cc: Moved to...
+       * libproc_macro_internal/ident.cc: ...here.
+       * libproc_macro/ident.h: Moved to...
+       * libproc_macro_internal/ident.h: ...here.
+       * libproc_macro/literal.cc: Moved to...
+       * libproc_macro_internal/literal.cc: ...here.
+       * libproc_macro/literal.h: Moved to...
+       * libproc_macro_internal/literal.h: ...here.
+       * libproc_macro/proc_macro.cc: Moved to...
+       * libproc_macro_internal/proc_macro.cc: ...here.
+       * libproc_macro/proc_macro.h: Moved to...
+       * libproc_macro_internal/proc_macro.h: ...here.
+       * libproc_macro/punct.cc: Moved to...
+       * libproc_macro_internal/punct.cc: ...here.
+       * libproc_macro/punct.h: Moved to...
+       * libproc_macro_internal/punct.h: ...here.
+       * libproc_macro/registration.h: Moved to...
+       * libproc_macro_internal/registration.h: ...here.
+       * libproc_macro/rust/bridge.rs: Moved to...
+       * libproc_macro_internal/rust/bridge.rs: ...here.
+       * libproc_macro/rust/bridge/ffistring.rs: Moved to...
+       * libproc_macro_internal/rust/bridge/ffistring.rs: ...here.
+       * libproc_macro/rust/bridge/group.rs: Moved to...
+       * libproc_macro_internal/rust/bridge/group.rs: ...here.
+       * libproc_macro/rust/bridge/ident.rs: Moved to...
+       * libproc_macro_internal/rust/bridge/ident.rs: ...here.
+       * libproc_macro/rust/bridge/literal.rs: Moved to...
+       * libproc_macro_internal/rust/bridge/literal.rs: ...here.
+       * libproc_macro/rust/bridge/punct.rs: Moved to...
+       * libproc_macro_internal/rust/bridge/punct.rs: ...here.
+       * libproc_macro/rust/bridge/span.rs: Moved to...
+       * libproc_macro_internal/rust/bridge/span.rs: ...here.
+       * libproc_macro/rust/bridge/token_stream.rs: Moved to...
+       * libproc_macro_internal/rust/bridge/token_stream.rs: ...here.
+       * libproc_macro/rust/group.rs: Moved to...
+       * libproc_macro_internal/rust/group.rs: ...here.
+       * libproc_macro/rust/ident.rs: Moved to...
+       * libproc_macro_internal/rust/ident.rs: ...here.
+       * libproc_macro/rust/lib.rs: Moved to...
+       * libproc_macro_internal/rust/lib.rs: ...here.
+       * libproc_macro/rust/literal.rs: Moved to...
+       * libproc_macro_internal/rust/literal.rs: ...here.
+       * libproc_macro/rust/punct.rs: Moved to...
+       * libproc_macro_internal/rust/punct.rs: ...here.
+       * libproc_macro/rust/span.rs: Moved to...
+       * libproc_macro_internal/rust/span.rs: ...here.
+       * libproc_macro/rust/token_stream.rs: Moved to...
+       * libproc_macro_internal/rust/token_stream.rs: ...here.
+       * libproc_macro/span.cc: Moved to...
+       * libproc_macro_internal/span.cc: ...here.
+       * libproc_macro/span.h: Moved to...
+       * libproc_macro_internal/span.h: ...here.
+       * libproc_macro/tokenstream.cc: Moved to...
+       * libproc_macro_internal/tokenstream.cc: ...here.
+       * libproc_macro/tokenstream.h: Moved to...
+       * libproc_macro_internal/tokenstream.h: ...here.
+       * libproc_macro/tokentree.cc: Moved to...
+       * libproc_macro_internal/tokentree.cc: ...here.
+       * libproc_macro/tokentree.h: Moved to...
+       * libproc_macro_internal/tokentree.h: ...here.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/literal.cc (Literal__from_string): Add
+       implementation with call to constructor.
+       (Literal::make_literal): Add new constructor which calls the
+       callback.
+       * libproc_macro/literal.h: Add new constructor's
+       prototype.
+       * libproc_macro/proc_macro.cc (bridge_is_available):
+       Change symbol name to match convention.
+       * libproc_macro/registration.h: Add lit_from_str
+       symbol.
+       * libproc_macro/tokenstream.cc (TokenStream::make_tokenstream):
+       Change symbol name to disambiguate with literal from string.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.cc: Remove type alias.
+       * libproc_macro/registration.h: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.h (proc_macro_register_from_str):
+       Remove rogue function prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.cc (not_available): Remove
+       function.
+       * libproc_macro/proc_macro.h (not_available): Remove
+       function prototype.
+       * libproc_macro/registration.h: Change symbol type.
+       * libproc_macro/bridge.h: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.cc (bridge_is_available):
+       Add bridge function.
+       * libproc_macro/proc_macro.h (bridge_is_available):
+       Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.cc (not_available): Add a
+       function to express bridge unavailability.
+       * libproc_macro/proc_macro.h (not_available): Likewise.
+       * libproc_macro/registration.h: Add symbol type.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.cc (Procmacro::make_bang):
+       Change symbol name.
+       * libproc_macro/registration.h: Likewise.
+       * libproc_macro/tokenstream.cc (TokenStream::make_tokenstream): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/literal.cc (Literal__from_string):
+       Update to match rust interface.
+       * libproc_macro/literal.h (Literal__from_string):
+       Likewise.
+       * libproc_macro/tokenstream.cc (TokenStream__from_string):
+       Likewise.
+       * libproc_macro/tokenstream.h (TokenStream__from_string):
+       Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/rust/bridge/literal.rs: Change extern C
+       function argument from raw string pointer and length to
+       FFIString.
+       * libproc_macro/rust/bridge/token_stream.rs: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/rust/bridge/ident.rs: Change raw
+       pointer string with an FFIString.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/ident.cc (Ident__new): Constructor
+       accepts an FFIString now.
+       (Ident__new_raw): Likewise.
+       (Ident::clone): Internal members change means clone also change.
+       (Ident::make_ident): Change constructor call.
+       (Ident::drop): Add call to FFIString::clone.
+       * libproc_macro/ident.h (struct Ident): Remove raw
+       pointer and length, add an FFIString inside instead.
+       (Ident__new): Change constructor.
+       (Ident__new_raw): Change constructor.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.cc (proc_macro_register_from_str):
+       Add registration function.
+       * libproc_macro/proc_macro.h (proc_macro_register_from_str):
+       Add registration function prototype.
+       * libproc_macro/tokenstream.cc (TokenStream::make_tokenstream):
+       Add a new constructor from a string that uses the registered
+       callback.
+       (TokenStream__from_string): Add call to new constructor.
+       * libproc_macro/tokenstream.h: Add registration
+       declaration.
+       * libproc_macro/registration.h: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/ffistring.cc (FFIString::make_ffistring):
+       Add explicit sizeof and utf-8 warning.
+       (FFIString::clone): Add explicit sizeof and utf-8 warning.
+       * libproc_macro/ident.cc (Ident::clone): Likewise.
+       (Ident::make_ident): Likewise.
+       * libproc_macro/tokenstream.cc (TokenStream::grow):
+       Fix vector growth.
+       (TokenStream__clone): Add explicit sizeof.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/tokenstream.cc (TokenStream::grow): Add
+       minimum growing capacity.
+       (TokenStream::push): Change condition.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.h (struct CustomDerivePayload):
+       Rename from CustomDerivePayload to...
+       (struct CustomDerive): ... CustomDerive
+       (struct AttrPayload): Rename from AttrPayload to ...
+       (struct Attribute): ... Attribute
+       (struct BangPayload): Rename from BangPayload to ...
+       (struct Bang): ... Bang
+       (union ProcmacroPayload): Update union with new names.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.h (struct ProcmacroArray):
+       Add ProcmacroArray definition.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/Makefile.am: Add span.cc
+       * libproc_macro/Makefile.in: Regenerate.
+       * libproc_macro/span.cc: New file.
+       * libproc_macro/span.h: New file.
+       * libproc_macro/group.cc (Group::make_group): Add span
+       argument.
+       * libproc_macro/group.h (GROUP_H): Add include
+       directive for spans.
+       * libproc_macro/ident.cc (Ident__new): Add span
+       argument.
+       (Ident__new_raw): Likewise.
+       (Ident::make_ident): Likewise.
+       * libproc_macro/ident.h (Ident__new): Likewise.
+       (Ident__new_raw): Likewise.
+       * libproc_macro/literal.cc (Literal::clone): Clone the
+       span.
+       (Literal::make_literal): Add span argument.
+       (Literal::make_u8): Likewise.
+       (Literal::make_u16): Likewise.
+       (Literal::make_u32): Likewise.
+       (Literal::make_u64): Likewise.
+       (Literal::make_i8): Likewise.
+       (Literal::make_i16): Likewise.
+       (Literal::make_i32): Likewise.
+       (Literal::make_i64): Likewise.
+       (Literal::make_string): Likewise.
+       (Literal::make_byte_string): Likewise.
+       (Literal::make_f32): Likewise.
+       (Literal::make_f64): Likewise.
+       (Literal::make_char): Likewise.
+       (Literal::make_usize): Likewise.
+       (Literal::make_isize): Likewise.
+       * libproc_macro/literal.h (struct Literal): Add span to
+       Literal structure.
+       * libproc_macro/punct.cc (Punct::make_punct): Add span
+       argument to punct constructor.
+       * libproc_macro/punct.h (struct Punct): Add span to
+       Punct structure.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/rust/bridge/group.rs: Add span member
+       to the Group structure.
+       * libproc_macro/rust/bridge/ident.rs: Likewise with the
+       Ident structure.
+       * libproc_macro/rust/bridge/literal.rs: Likewise with
+       the Literal structure.
+       * libproc_macro/rust/bridge/punct.rs: Likewise with the
+       Punct structure.
+       * libproc_macro/rust/bridge/span.rs: Add span
+       internals.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/rust/bridge/ffistring.rs: Implement
+       From trait for FFIString.
+       * libproc_macro/rust/bridge/literal.rs: Change
+       constructor call.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/ffistring.cc (FFIString::make_ffistring):
+       Add copy from source pointer.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/literal.h: Remove has_suffix member
+       attribute from Literal.
+       * libproc_macro/literal.cc: Update constructors.
+       * libproc_macro/rust/bridge/literal.rs: Remove
+       has_suffix attribute from Literal.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/Makefile.am: Add ffistring unit to
+       compiled objects list.
+       * libproc_macro/Makefile.in: Regenerate.
+       * libproc_macro/literal.cc (Literal::drop): Change with
+       a call to ffistring drop function.
+       (Literal::make_literal): Add new helper constructor
+       (Literal__drop): Remove this function.
+       (Literal__string): Likewise.
+       (Literal__byte_string): Likewise.
+       (Literal__from_string): Moved this function.
+       (Literal::make_unsigned): Changed the constructor to match the
+       new layout.
+       (Literal::make_signed): Likewise.
+       (Literal::clone): Reimplement th eclone function.
+       (Literal::make_u8): Changed the constructor, make suffixed by
+       default.
+       (Literal::make_u16): Likewise.
+       (Literal::make_u32): Likewise.
+       (Literal::make_u64): Likewise.
+       (Literal::make_i8): Likewise.
+       (Literal::make_i16): Likewise.
+       (Literal::make_i32): Likewise.
+       (Literal::make_i64): Likewise.
+       (Literal::make_string): Likewise.
+       (Literal::make_byte_string): Likewise.
+       (Literal::make_f32): Likewise.
+       (Literal::make_f64): Likewise.
+       (Literal::make_char): Likewise.
+       (Literal::make_usize): Likewise.
+       (Literal::make_isize): Likewise.
+       (LitKind::make_byte): Add new helper constructor to avoid having
+       to set the payload value.
+       (LitKind::make_char): Likewise.
+       (LitKind::make_integer): Likewise.
+       (LitKind::make_float): Likewise.
+       (LitKind::make_str): Likewise.
+       (LitKind::make_str_raw): Add a new helper constructor which
+       takes the payload value as an argument.
+       (LitKind::make_byte_str): Add new helper constructor to avoid
+       mistakes with payload value.
+       (LitKind::make_byte_str_raw): Add a new helper constructor which
+       takes the payload value as an argument.
+       * libproc_macro/literal.h: Add new functions prototype.
+       (enum UnsignedTag): Removed because it is now unused.
+       (struct Payload128): Likewise.
+       (union UnsignedPayload): Likewise.
+       (struct Unsigned): Likewise.
+       (enum SignedTag): Likewise.
+       (union SignedPayload): Likewise.
+       (struct Signed): Likewise.
+       (enum LiteralTag): Likewise.
+       (enum LitKindTag): Likewise.
+       (struct StringPayload): Likewise.
+       (struct ByteStringPayload): Likewise.
+       (union LitKindPayload): Likewise.
+       (struct UnsignedSuffixPayload): Likewise.
+       (struct LitKind): Add new literal kind struct representation to
+       match the enum on rust side.
+       (struct SignedSuffixPayload): Removed because now unused.
+       (struct UsizePayload): Likewise.
+       (struct IsizePayload): Likewise.
+       (struct Float32Payload): Likewise.
+       (struct Float64Payload): Likewise.
+       (union LiteralPayload): Likewise.
+       (struct Literal): Changed the internals of the structure.
+       (Literal__drop): Removed the drop function fom the c interface.
+       (Literal__string): Removed unused function.
+       (Literal__byte_string): Removed unused function.
+       * libproc_macro/ffistring.cc: New file.
+       * libproc_macro/ffistring.h: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/rust/bridge.rs: Add ffistring module.
+       * libproc_macro/rust/bridge/literal.rs: Rework type
+       internals.
+       * libproc_macro/rust/bridge/ffistring.rs: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.cc (Procmacro::make_derive):
+       Add custom derive macro constructor.
+       (Procmacro::make_attribute): Add attribute macro constructor.
+       (Procmacro::make_bang): Add bang macro constructor.
+       * libproc_macro/proc_macro.h (struct Procmacro):
+       Add helper function prototypes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.h (struct CustomDerivePayload):
+       Add C compatible payload structure.
+       (struct AttrPayload): Likewise.
+       (struct BangPayload): Likewise.
+       (enum ProcmacroTag): Add tag for tagged union.
+       (union ProcmacroPayload): Proc macro payload union.
+       (struct Procmacro): Tagged union.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.h: Add Literal, Punct,
+       Group, TokenTree and Tokenstream headers.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * Makefile.am: Remove libtool forwarding.
+       * Makefile.in: Regenerate.
+       * libproc_macro/Makefile.am: Creates an archive instead
+       of using libtool.
+       * libproc_macro/Makefile.in: Regenerate.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/group.cc (Group::make_group): Remove
+       internal namespace.
+       (Group::drop): Likewise.
+       * libproc_macro/group.h (enum Delimiter): Make members
+       upercase.
+       (struct Group):
+       * libproc_macro/ident.cc (Ident::drop): Remove internal
+       namespace.
+       * libproc_macro/ident.h (Ident__clone): Likewise.
+       * libproc_macro/literal.cc (Literal::make_isize):
+       Likewise.
+       * libproc_macro/literal.h (union LiteralPayload):
+       Likewise.
+       (Literal__from_string): Likewise.
+       * libproc_macro/punct.cc (Punct::make_punct): Likewise.
+       * libproc_macro/punct.h (enum Spacing): Make members
+       uppercase.
+       * libproc_macro/tokenstream.cc (TokenStream::make_tokenstream):
+       Remove internal namespace.
+       (TokenStream::grow): Likewise.
+       (TokenStream::push): Likewise.
+       (TokenSream__push): Likewise.
+       (TokenStream__clone): Likewise.
+       (TokenStream__drop): Likewise.
+       * libproc_macro/tokenstream.h (struct TokenStream):
+       Likewise.
+       (TokenSream__push): Likewise.
+       (TokenStream__drop): Likewise.
+       * libproc_macro/tokentree.cc (TokenTree::make_tokentree):
+       Likewise.
+       (TokenTree::drop): Likewise.
+       * libproc_macro/tokentree.h (union TokenTreePayload):
+       Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/group.cc (Group::drop): Add Procmacro
+       namespace.
+       * libproc_macro/group.h: Likewise.
+       * libproc_macro/ident.cc (Ident::drop): Likewise.
+       * libproc_macro/ident.h (Ident__clone): Likewise.
+       * libproc_macro/literal.cc (Literal::make_isize):
+       Likewise.
+       * libproc_macro/literal.h (Literal__from_string):
+       Likewise.
+       * libproc_macro/punct.cc (Punct::make_punct): Likewise.
+       * libproc_macro/punct.h: Likewise.
+       * libproc_macro/tokenstream.cc (TokenStream__drop):
+       Likewise.
+       * libproc_macro/tokenstream.h (TokenStream__drop):
+       Likewise.
+       * libproc_macro/tokentree.cc (TokenTree::drop):
+       Likewise.
+       * libproc_macro/tokentree.h: Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/literal.cc (Literal::drop): Change
+       delete operator to delete[].
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/rust/bridge/token_stream.rs: Implement
+       drop.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/group.cc (Group::drop): Add drop
+       implementation.
+       * libproc_macro/group.h: Add drop prototype.
+       * libproc_macro/tokenstream.cc (TokenStream::drop): Add
+       drop implementation.
+       (TokenStream__drop): Change to a call to TokenStream::drop.
+       * libproc_macro/tokenstream.h: Add drop prototype.
+       * libproc_macro/tokentree.cc (TokenTree::drop): Add
+       drop implementation.
+       * libproc_macro/tokentree.h: Add drop prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/literal.cc (Literal__drop): Replace
+       implementation by a call to Literal::drop.
+       (Literal::drop): Add drop implementation.
+       * libproc_macro/literal.h: Add function prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/ident.cc (Ident__drop): Replace by call
+       to Ident::drop.
+       (Ident::drop): Add drop function.
+       * libproc_macro/ident.h: Add drop prototype.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/group.cc: New file.
+       * libproc_macro/group.h: New file.
+       * libproc_macro/tokenstream.cc: New file.
+       * libproc_macro/tokenstream.h: New file.
+       * libproc_macro/tokentree.cc: New file.
+       * libproc_macro/tokentree.h: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/punct.cc: New file.
+       * libproc_macro/punct.h: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/ident.cc (Ident::make_ident): Add Ident
+       namespace.
+       * libproc_macro/ident.h (Ident__clone): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/ident.cc (Ident__new): Use named
+       constructor.
+       (Ident__new_raw): Use named constructor.
+       (Ident__clone): Use clone member function.
+       (Ident::clone): Make clone const.
+       (Ident::make_ident): Add named construcot.
+       * libproc_macro/ident.h (struct Ident): Add named
+       constructor prototypes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/rust/bridge/ident.rs: Change drop
+       function interface.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/ident.cc: New file.
+       * libproc_macro/ident.h: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/literal.cc (Literal__string): Add call
+       to named constructor.
+       (Literal__byte_string): Likewise.
+       (Literal::make_unsigned): Add function.
+       (Literal::make_signed): Add function.
+       (Literal::clone): Likewise.
+       (Literal::make_u8): Likewise.
+       (Literal::make_u16): Likewise.
+       (Literal::make_u32): Likewise.
+       (Literal::make_u64): Likewise.
+       (Literal::make_i8): Likewise.
+       (Literal::make_i16): Likewise.
+       (Literal::make_i32): Likewise.
+       (Literal::make_i64): Likewise.
+       (Literal::make_string): Likewise.
+       (Literal::make_byte_string): Likewise.
+       (Literal::make_f32): Likewise.
+       (Literal::make_f64): Likewise.
+       (make_char): Likewise.
+       (Literal::make_char): Likewise.
+       (make_usize): Likewise.
+       (Literal::make_usize): Likewise.
+       (make_isize): Likewise.
+       (Literal::make_isize): Likewise.
+       * libproc_macro/literal.h: Add prototypes.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/literal.cc (Literal__from_string):
+       Add abort because unimplemented.
+       * libproc_macro/literal.h (Literal__from_string): Add
+       namespace.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/rust/bridge/literal.rs: Make the
+       pointer mutable.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/literal.h (Literal__drop): Implement
+       drop.
+       (Literal__string): Constructor from a string function prototype.
+       (Literal__byte_string): Constructor from a byte string function
+       prototype.
+       (Literal__from_string): Add function body, no implementation
+       yet.
+       * libproc_macro/literal.cc: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.h (PROC_MACRO_H): Add
+       literal header include directive.
+       * libproc_macro/literal.h: New file.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/proc_macro.cc (test): Remove dummy
+       function.
+       * libproc_macro/proc_macro.h (test): Likewise.
+
+2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+       * libproc_macro/rust/bridge.rs: New file.
+       * libproc_macro/rust/bridge/group.rs: New file.
+       * libproc_macro/rust/bridge/ident.rs: New file.
+       * libproc_macro/rust/bridge/literal.rs: New file.
+       * libproc_macro/rust/bridge/punct.rs: New file.
+       * libproc_macro/rust/bridge/span.rs: New file.
+       * libproc_macro/rust/bridge/token_stream.rs: New file.
+       * libproc_macro/rust/group.rs: New file.
+       * libproc_macro/rust/ident.rs: New file.
+       * libproc_macro/rust/lib.rs: New file.
+       * libproc_macro/rust/literal.rs: New file.
+       * libproc_macro/rust/punct.rs: New file.
+       * libproc_macro/rust/span.rs: New file.
+       * libproc_macro/rust/token_stream.rs: New file.
+
 2024-01-08  Thomas Schwinge  <thomas@codesourcery.com>
 
        PR rust/113056