https://gcc.gnu.org/g:6621e5a1d1195137a1dd6d917961ab23609a244c
commit r15-9146-g6621e5a1d1195137a1dd6d917961ab23609a244c Author: Jonathan Wakely <jwak...@redhat.com> Date: Tue Mar 18 18:37:01 2025 +0000 cobol: Fix incorrect use of std::remove_if The call to std::remove_if used here doesn't remove any elements, it just overwrites the "removed" elements with later elements, leaving the total number of elements unchanged. Use std::list::remove_if to actually remove those unwanted elements from the list. gcc/cobol/ChangeLog: * symfind.cc (finalize_symbol_map2): Use std::list::remove_if instead of std::remove_if. Diff: --- gcc/cobol/symfind.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/gcc/cobol/symfind.cc b/gcc/cobol/symfind.cc index 2687fdb83df2..899571551e8f 100644 --- a/gcc/cobol/symfind.cc +++ b/gcc/cobol/symfind.cc @@ -128,11 +128,10 @@ finalize_symbol_map2() { for( auto& elem : symbol_map2 ) { auto& fields( elem.second ); - std::remove_if( fields.begin(), fields.end(), - []( auto isym ) { - auto f = cbl_field_of(symbol_at(isym)); - return f->type == FldInvalid; - } ); + fields.remove_if( []( auto isym ) { + auto f = cbl_field_of(symbol_at(isym)); + return f->type == FldInvalid; + } ); if( fields.empty() ) empties.insert(elem.first); }