This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libstdc++/51608] [4.7 Regression][C++11] Unordered containers end(size_type) isn't constant time


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51608

--- Comment #1 from FranÃois Dumont <fdumont at gcc dot gnu.org> 2011-12-29 17:58:57 UTC ---
Author: fdumont
Date: Thu Dec 29 17:58:51 2011
New Revision: 182727

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=182727
Log:
2011-12-29  FranÃois Dumont <fdumont@gcc.gnu.org>

    PR libstdc++/51608
    * include/bits/hashtable_policy.h (_Equal_helper<>): New, change the
    way the _Equal functor is used depending on whether hash code is
    cached or not.
    (_Ebo_helper<>): New helper type to introduce EBO when possible.
    (_Hash_code_base): Use _Ebo_helper to limit memory footprint. Move
    _Equal functor management...
    (_Hashtable_base): ...here, new, use _Equal_helper.
    (_Local_iterator_base<>, _Locale_iterator<>, _Locale_const_iterator<>):
    New, use _Hash_code_base, implementation of...
    * include/bits/hashtable.h (_Hashtable<>::local_iterator,
    _Hashtable<>::const_local_iterator): ...those. Add static assertions
    checking that some functors are empty depending on whether hash code
    is cache or not.
    (_Hashtable<>::_M_bucket_index): New overloads using current bucket
    count, use through out the _Hastable<> implementation.
    * include/bits/unordered_set.h (__unordered_set<>,
    __unordered_multiset<>): Cache hash code iff hash functor is not
    empty and not final.
    * include/bits/unordered_map.h (__unordered_map<>,
    __unordered_multimap<>): Likewise.
    * include/debug/unordered_map
    (unordered_map<>::_S_to_local, unordered_multimap<>::_S_to_local):
    Adapt to match new local iterator implementation.
    * include/debug/unordered_set (unordered_set<>::_S_to_local,
    unordered_multiset<>::_S_to_local): Likewise.
    * include/profile/unordered_map (unordered_map<>::_M_profile_destruct,
    unordered_multimap<>::_M_profile_destruct): Enhance thanks to usage of
    local iterators.
    * include/profile/unordered_set (unordered_set<>::_M_profile_destruct,
    unordered_multiset<>::_M_profile_destruct): Likewise.
    * testsuite_files/23_containers/unordered_set/instantiation_neg.cc:
    Fix error line.
    * testsuite_files/23_containers/unordered_set/final_hash.cc: New.
    * testsuite_files/23_containers/unordered_multiset/final_hash.cc: New.
    * testsuite_files/23_containers/unordered_map/final_hash.cc: New.
    * testsuite_files/23_containers/unordered_multimap/final_hash.cc: New.

Added:
    trunk/libstdc++-v3/testsuite/23_containers/unordered_map/final_hash.cc
    trunk/libstdc++-v3/testsuite/23_containers/unordered_multimap/final_hash.cc
    trunk/libstdc++-v3/testsuite/23_containers/unordered_multiset/final_hash.cc
    trunk/libstdc++-v3/testsuite/23_containers/unordered_set/final_hash.cc
Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/include/bits/hashtable.h
    trunk/libstdc++-v3/include/bits/hashtable_policy.h
    trunk/libstdc++-v3/include/bits/unordered_map.h
    trunk/libstdc++-v3/include/bits/unordered_set.h
    trunk/libstdc++-v3/include/debug/unordered_map
    trunk/libstdc++-v3/include/debug/unordered_set
    trunk/libstdc++-v3/include/profile/unordered_map
    trunk/libstdc++-v3/include/profile/unordered_set
   
trunk/libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]