[Bug libstdc++/115285] [12/13/14/15 Regression] std::unordered_set can have duplicate value
Jonathan Wakely
jwakely@redhat.com
Thu Oct 24 19:49:27 GMT 2024
On Thu, 24 Oct 2024 at 19:43, François Dumont <frs.dumont@gmail.com> wrote:
>
> Committed as trivial the attached patch.
>
> libstdc++: Fix test broken when using COW std::string
>
> libstdc++-v3/ChangeLog:
>
> * testsuite/23_containers/unordered_map/96088.cc (test03):
Thanks! I think it was affecting the unordered_set test too.
> Fix increments
> value when _GLIBCXX_USE_CXX11_ABI is equal to 0.
>
> I took the time to fully understand why we need special case for COW
> string. So I'm going to forget what I said below.
>
> I will backport next week.
>
> François
>
>
> On 24/10/2024 19:33, François Dumont wrote:
> > Yes, just got the email about it too.
> >
> > I'm just going to fix this problem in a simple way for now. But I
> > think I'll consider to replace usages of std::string with an abi
> > agnostic type in the future.
> >
> > Sorry, François
> >
> >
> > On 24/10/2024 10:09, Jonathan Wakely wrote:
> >> I'm seeing new FAILs with -D_GLIBCXX_USE_CXX11_ABI=0
> >>
> >> /home/test/src/gcc/libstdc++-v3/testsuite/23_containers/unordered_set/96088.cc:247:
> >>
> >> void test03(): Assertion '__gnu_test::counter::get()._M_increments ==
> >> in
> >> crements + 1' failed.
> >> FAIL: 23_containers/unordered_set/96088.cc -std=gnu++17 execution test
> >>
> >> /home/test/src/gcc/libstdc++-v3/testsuite/23_containers/unordered_map/96088.cc:240:
> >>
> >> void test03(): Assertion '__gnu_test::counter::count() == origin +
> >> incre
> >> ments' failed.
> >> FAIL: 23_containers/unordered_map/96088.cc -std=gnu++17 execution test
> >>
> >>
> >>
> >> On Tue, 22 Oct 2024 at 18:28, François Dumont <frs.dumont@gmail.com>
> >> wrote:
> >>> Hi
> >>>
> >>> libstdc++: Always instantiate key_type to compute hash code
> >>> [PR115285]
> >>>
> >>> Even if it is possible to compute a hash code from the inserted
> >>> arguments
> >>> we need to instantiate the key_type to guaranty hash code
> >>> consistency.
> >>>
> >>> Preserve the lazy instantiation of the mapped_type in the
> >>> context of
> >>> associative containers.
> >>>
> >>> libstdc++-v3/ChangeLog:
> >>>
> >>> PR libstdc++/115285
> >>> * include/bits/hashtable.h (_S_forward_key<_Kt>): Always
> >>> return a temporary
> >>> key_type instance.
> >>> * testsuite/23_containers/unordered_map/96088.cc:
> >>> Adapt to
> >>> additional instanciation.
> >>> Also check that mapped_type is not instantiated when
> >>> there
> >>> is no insertion.
> >>> * testsuite/23_containers/unordered_multimap/96088.cc:
> >>> Adapt to additional
> >>> instanciation.
> >>> * testsuite/23_containers/unordered_multiset/96088.cc:
> >>> Likewise.
> >>> * testsuite/23_containers/unordered_set/96088.cc:
> >>> Likewise.
> >>> * testsuite/23_containers/unordered_set/pr115285.cc: New
> >>> test case.
> >>>
> >>>
> >>> Tested under Linux x64,
> >>>
> >>> ok to commit ?
> >>>
> >>> François
More information about the Libstdc++
mailing list