https://gcc.gnu.org/g:7eef183ae85eb5bd4756061dbe9ad0a2ecc9dce7

commit r16-4755-g7eef183ae85eb5bd4756061dbe9ad0a2ecc9dce7
Author: Pierre-Emmanuel Patry <[email protected]>
Date:   Tue Aug 5 10:55:33 2025 +0200

    gccrs: Explicitly use an empty vector for structural eq
    
    Previous code was technically valid since the moved from vector was
    empty but explicitly setting it empty with it's own name will help.
    
    gcc/rust/ChangeLog:
    
            * expand/rust-derive-eq.cc: Use empty vector explicitly.
    
    Signed-off-by: Pierre-Emmanuel Patry <[email protected]>

Diff:
---
 gcc/rust/expand/rust-derive-eq.cc | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gcc/rust/expand/rust-derive-eq.cc 
b/gcc/rust/expand/rust-derive-eq.cc
index 7da137fb5c27..17332a47937e 100644
--- a/gcc/rust/expand/rust-derive-eq.cc
+++ b/gcc/rust/expand/rust-derive-eq.cc
@@ -128,9 +128,13 @@ DeriveEq::eq_impls (
   auto eq_impl = builder.trait_impl (eq, std::move (eq_generics.self_type),
                                     std::move (trait_items),
                                     std::move (eq_generics.impl));
+
+  // StructuralEq is a marker trait
+  decltype (trait_items) steq_trait_items = {};
+
   auto steq_impl
     = builder.trait_impl (steq, std::move (steq_generics.self_type),
-                         std::move (trait_items),
+                         std::move (steq_trait_items),
                          std::move (steq_generics.impl));
 
   return vec (std::move (eq_impl), std::move (steq_impl));

Reply via email to