https://gcc.gnu.org/g:6aeedda54162443a1969ab6410dca0a35acdca01
commit r16-2994-g6aeedda54162443a1969ab6410dca0a35acdca01 Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Date: Fri Aug 1 17:31:36 2025 +0200 gccrs: Prevent used after move on self param gcc/rust/ChangeLog: * hir/rust-ast-lower-implitem.cc (ASTLowerTraitItem::visit): Remove use after move. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Diff: --- gcc/rust/hir/rust-ast-lower-implitem.cc | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/gcc/rust/hir/rust-ast-lower-implitem.cc b/gcc/rust/hir/rust-ast-lower-implitem.cc index fc9fe1ace4a9..a35d66133822 100644 --- a/gcc/rust/hir/rust-ast-lower-implitem.cc +++ b/gcc/rust/hir/rust-ast-lower-implitem.cc @@ -278,6 +278,15 @@ ASTLowerTraitItem::visit (AST::Function &func) function_params.push_back (hir_param); } + if (func.has_self_param ()) + { + // insert mappings for self + // TODO: Is this correct ? Looks fishy + mappings.insert_hir_self_param (&*self_param); + mappings.insert_location (self_param->get_mappings ().get_hirid (), + self_param->get_locus ()); + } + HIR::TraitFunctionDecl decl (func.get_function_name (), std::move (qualifiers), std::move (generic_params), @@ -301,14 +310,6 @@ ASTLowerTraitItem::visit (AST::Function &func) = new HIR::TraitItemFunc (mapping, std::move (decl), std::move (block_expr), func.get_outer_attrs (), func.get_locus ()); translated = trait_item; - if (func.has_self_param ()) - { - // insert mappings for self - // TODO: Is this correct ? Looks fishy - mappings.insert_hir_self_param (&*self_param); - mappings.insert_location (self_param->get_mappings ().get_hirid (), - self_param->get_locus ()); - } // add the mappings for the function params at the end for (auto ¶m : trait_item->get_decl ().get_function_params ())