https://gcc.gnu.org/g:d1e3e3ec02342fb0b26295df7d20569c27c9a94e
commit r16-4805-gd1e3e3ec02342fb0b26295df7d20569c27c9a94e Author: Pierre-Emmanuel Patry <[email protected]> Date: Thu Aug 21 12:59:19 2025 +0200 gccrs: Avoid copy when constructing TypeBoundPredicate Construct the TypeBoundPredicate in the vector instead of copying it. gcc/rust/ChangeLog: * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): Construct value in place. Signed-off-by: Pierre-Emmanuel Patry <[email protected]> Diff: --- gcc/rust/typecheck/rust-hir-trait-resolve.cc | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/gcc/rust/typecheck/rust-hir-trait-resolve.cc b/gcc/rust/typecheck/rust-hir-trait-resolve.cc index b8dd0ad782af..03121d1009e3 100644 --- a/gcc/rust/typecheck/rust-hir-trait-resolve.cc +++ b/gcc/rust/typecheck/rust-hir-trait-resolve.cc @@ -253,12 +253,10 @@ TraitResolver::resolve_trait (HIR::Trait *trait_reference) // They also inherit themselves as a bound this enables a trait item to // reference other Self::trait_items - auto self_hrtb - = TyTy::TypeBoundPredicate (trait_reference->get_mappings ().get_defid (), - std::move (self_subst_copy), - BoundPolarity::RegularBound, - trait_reference->get_locus ()); - specified_bounds.push_back (self_hrtb); + specified_bounds.emplace_back (trait_reference->get_mappings ().get_defid (), + std::move (self_subst_copy), + BoundPolarity::RegularBound, + trait_reference->get_locus ()); // look for any std::vector<TyTy::TypeBoundPredicate> super_traits;
