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 &param : trait_item->get_decl ().get_function_params ())

Reply via email to