[{"id":3680464,"web_url":"http://patchwork.ozlabs.org/comment/3680464/","msgid":"<bmm.h1sdavqglc.gcc.gcc-TEST.fdumont.18.71.REVIEW@forge-stage.sourceware.org>","list_archive_url":null,"date":"2024-11-14T05:52:06","subject":"Re: [PATCH v1 0/1] libstdc++: Simplify _Hashtable merge functions","submitter":{"id":93220,"url":"http://patchwork.ozlabs.org/api/people/93220/","name":"François Dumont via Sourceware Forge","email":"forge-bot+fdumont@forge-stage.sourceware.org"},"content":"François Dumont (fdumont) <fdumont@gcc.gnu.org> requested changes to the code:\nVery good optimization !\n\n> +++ libstdc++-v3/include/bits/hashtable.h\n> @@ -1162,0 +1169,4 @@\n> +\tauto __n_elt = __src.size();\n> +\tsize_type __first = 1;\n> +\t// For a container of identical type we can use its private members.\n> +\tauto __p = static_cast<__node_ptr>(&__src._M_before_begin);\nIs it safe to cast a __node_base pointer to __node_ptr ?\n\nYou are then calling _M_next() on it which is not a member of __node_base type.\n\n> +++ libstdc++-v3/include/bits/hashtable.h\n> @@ -1162,0 +1169,4 @@\n> +\tauto __n_elt = __src.size();\n> +\tsize_type __first = 1;\n> +\t// For a container of identical type we can use its private members.\n> +\tauto __p = static_cast<__node_ptr>(&__src._M_before_begin);\nGood point, it should use `_M_nxt` and only cast after that.\n\n> +++ libstdc++-v3/include/bits/hashtable.h\n> @@ -1162,0 +1194,4 @@\n> +\t\tcontinue;\n> +\n> +\t    __hash_code __src_code = __src.hash_function()(__k);\n> +\t    size_type __src_bkt = __src._M_bucket_index(__src_code);\nThose 2 lines should be replaced by:\n`size_type __src_bkt = __src._M_bucket_index(__node);`\n\nto benefit from cached hash code if any.\n\n> +++ libstdc++-v3/include/bits/hashtable.h\n> @@ -1211,0 +1262,4 @@\n> +\t__node_ptr __hint = nullptr;\n> +\tthis->reserve(size() + __src.size());\n> +\t// For a container of identical type we can use its private members.\n> +\tauto __prev = static_cast<__node_ptr>(&__src._M_before_begin);\nSame static_cast issue ?\n\n> +++ libstdc++-v3/include/bits/hashtable.h\n> @@ -1211,0 +1267,4 @@\n> +\t  {\n> +\t    const auto& __node = *__prev->_M_next();\n> +\t    const key_type& __k = _ExtractKey{}(__node._M_v());\n> +\t    __hash_code __code = this->_M_hash_code(__k);\nShould be:\n`__hash_code __code\n\t= _M_src_hash_code(__src.hash_function(), __k, __node);`\n\n> +++ libstdc++-v3/include/bits/hashtable.h\n> @@ -1211,0 +1267,4 @@\n> +\t  {\n> +\t    const auto& __node = *__prev->_M_next();\n> +\t    const key_type& __k = _ExtractKey{}(__node._M_v());\n> +\t    __hash_code __code = this->_M_hash_code(__k);\nThanks, all four comments should be addressed by #23\n\n\n--\nhttps://forge.sourceware.org/gcc/gcc-TEST/pulls/18#issuecomment-387","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org; dmarc=none (p=none dis=none)\n header.from=forge-stage.sourceware.org","sourceware.org;\n spf=pass smtp.mailfrom=forge-stage.sourceware.org","server2.sourceware.org;\n arc=none smtp.remote-ip=38.145.34.39"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g0ww84sz5z1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 20:49:44 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 8999D42B7BA4\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 10:49:42 +0000 (GMT)","from forge-stage.sourceware.org (vm08.sourceware.org [38.145.34.39])\n by sourceware.org (Postfix) with ESMTPS id CAFDF4BCA418\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 10:28:30 +0000 (GMT)","from forge-stage.sourceware.org (localhost [IPv6:::1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256)\n (No client certificate requested)\n by forge-stage.sourceware.org (Postfix) with ESMTPS id A2509405B5\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 10:28:30 +0000 (UTC)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 8999D42B7BA4","OpenDKIM Filter v2.11.0 sourceware.org CAFDF4BCA418"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org CAFDF4BCA418","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org CAFDF4BCA418","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776853710; cv=none;\n b=GokYgmz1rh3Pq153kXKjdwOgWElek8pXq4/rEc/iqR0EGO1siAcAVrHBJQjTdnHzoMxAletK/CaS4/ZclcidNf4ZqkyHoIW0ADNrFr+1SsIWJg+JqC2OoPObAZSI5C9WWj1mgkMm0W1aWhuxmdsHOETFZgjQA2TJuExbiQv8eEU=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776853710; c=relaxed/simple;\n bh=zsIn80yMnMZ8kwxvczC8okXww+3F1lD0420ZqCtHBlc=;\n h=Subject:From:To:Date:Message-ID:MIME-Version;\n b=PojaKxsDhECe/9pI1DF5EP8Unm9EXU+fPc9l2xBnNbgJX7gYFHRKTy3MPL8zdU9tEJ7KKFEa3jY+GzNxuPbqqwoo6qZtrEfDOGJ13YnQPpzqtXDfDiqGHGWvI2mOKduR8ZsedHHzehkzyFyhkuxX5XdS39zZHXbFJ5PW8LoMTrU=","ARC-Authentication-Results":"i=1; server2.sourceware.org","Subject":"Re: [PATCH v1 0/1] libstdc++: Simplify _Hashtable merge functions","From":"=?utf-8?b?RnJhbsOnb2lz?= Dumont via Sourceware Forge\n <forge-bot+fdumont@forge-stage.sourceware.org>","To":"gcc-patches mailing list <gcc-patches@gcc.gnu.org>","Date":"Thu, 14 Nov 2024 05:52:06 +0000","Message-ID":"\n <bmm.h1sdavqglc.gcc.gcc-TEST.fdumont.18.71.REVIEW@forge-stage.sourceware.org>","In-Reply-To":"\n <bmm.hhubaw7tx4.gcc.gcc-TEST.redi.18.1.0@forge-stage.sourceware.org>","X-Mailer":"batrachomyomachia","X-Requested-Reviewer":"fdumont","X-Pull-Request-Organization":"gcc","X-Pull-Request-Repository":"gcc-TEST","X-Pull-Request":"https://forge.sourceware.org/gcc/gcc-TEST/pulls/18","X-Review":"https://forge.sourceware.org/gcc/gcc-TEST/pulls/18#issuecomment-387","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"quoted-printable","MIME-Version":"1.0","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3680466,"web_url":"http://patchwork.ozlabs.org/comment/3680466/","msgid":"<bmm.hhubbsdmc4.gcc.gcc-TEST.redi.18.1.SUMMARY@forge-stage.sourceware.org>","list_archive_url":null,"date":"2026-04-22T10:28:33","subject":"[SUMMARY] Re: [PATCH v1 0/1] libstdc++: Simplify _Hashtable merge\n functions","submitter":{"id":93210,"url":"http://patchwork.ozlabs.org/api/people/93210/","name":"Jonathan Wakely via Sourceware Forge","email":"forge-bot+redi@forge-stage.sourceware.org"},"content":"This is a summary of discussions relative to the merge request created by Jonathan Wakely (redi) <redi@gcc.gnu.org> titled\nlibstdc++: Simplify _Hashtable merge functions\nsince its creation.\n\nDescription: I realised that _M_merge_unique and _M_merge_multi call extract(iter)\nwhich then has to call _M_get_previous_node to iterate through the\nbucket to find the node before the one iter points to. Since the merge\nfunction is already iterating over the entire container, we had the\nprevious node a moment ago. Walking the whole bucket to find it again is\nwasteful. We could just rewrite the loop in terms of node pointers\ninstead of iterators, and then call _M_extract_node directly. However,\nthis is only possible when the source container is the same type as the\ndestination, because otherwise we can't access the source's private\nmembers (_M_before_begin, _M_begin, _M_extract_node etc.)\n\nAdd overloads of _M_merge_unique and _M_merge_multi that work with\nsource containers of the same type, to enable this optimization.\n\nFor both overloads of _M_merge_unique we can also remove the conditional\nmodifications to __n_elt and just consistently decrement it for every\nelement processed. Use a multiplier of one or zero that dictates whether\n__n_elt is passed to _M_insert_unique_node or not. We can also remove\nthe repeated calls to size() and just keep track of the size in a local\nvariable.\n\nAlthough _M_merge_unique and _M_merge_multi should be safe for\n\"self-merge\", i.e. when doing c.merge(c), it's wasteful to search/insert\nevery element when we don't need to do anything. Add 'this == &source'\nchecks to the overloads taking an lvalue of the container's own type.\nBecause those checks aren't needed for the rvalue overloads, change\nthose to call the underlying _M_merge_xxx function directly instead of\ngoing through the lvalue overload that checks the address.\n\nI've also added more extensive tests for better coverage of the new\noverloads added in this commit.\n\n```\nlibstdc++-v3/ChangeLog:\n\n\t* include/bits/hashtable.h (_M_merge_unique): Add overload for\n\tmerging from same type.\n\t(_M_merge_unique<Compatible>): Simplify size tracking. Add\n\tcomment.\n\t(_M_merge_multi): Add overload for merging from same type.\n\t(_M_merge_multi<Compatible>): Add comment.\n\t* include/bits/unordered_map.h (unordered_map::merge): Check for\n\tself-merge in the lvalue overload. Call _M_merge_unique directly\n\tfor the rvalue overload.\n\t(unordered_multimap::merge): Likewise.\n\t* include/bits/unordered_set.h (unordered_set::merge): Likewise.\n\t(unordered_multiset::merge): Likewise.\n\t* testsuite/23_containers/unordered_map/modifiers/merge.cc:\n\tAdd more tests.\n\t* testsuite/23_containers/unordered_multimap/modifiers/merge.cc:\n\tLikewise.\n\t* testsuite/23_containers/unordered_multiset/modifiers/merge.cc:\n\tLikewise.\n\t* testsuite/23_containers/unordered_set/modifiers/merge.cc:\n\tLikewise.\n```\n\nThe full and up to date discussion can be found at https://forge.sourceware.org/gcc/gcc-TEST/pulls/18\n\nThe merge request has been closed without being merged directly on the forge repository.\n\nOn 2024-11-13 18:24:00+00:00, François Dumont (fdumont) <fdumont@gcc.gnu.org> requested changes to the code:\nVery good optimization !\n\n> +++ libstdc++-v3/include/bits/hashtable.h\n> @@ -1162,0 +1194,4 @@\n> +\t\tcontinue;\n> +\n> +\t    __hash_code __src_code = __src.hash_function()(__k);\n> +\t    size_type __src_bkt = __src._M_bucket_index(__src_code);\nThose 2 lines should be replaced by:\n`size_type __src_bkt = __src._M_bucket_index(__node);`\n\nto benefit from cached hash code if any.\n> +++ libstdc++-v3/include/bits/hashtable.h\n> @@ -1211,0 +1262,4 @@\n> +\t__node_ptr __hint = nullptr;\n> +\tthis->reserve(size() + __src.size());\n> +\t// For a container of identical type we can use its private members.\n> +\tauto __prev = static_cast<__node_ptr>(&__src._M_before_begin);\nSame static_cast issue ?\n> +++ libstdc++-v3/include/bits/hashtable.h\n> @@ -1211,0 +1267,4 @@\n> +\t  {\n> +\t    const auto& __node = *__prev->_M_next();\n> +\t    const key_type& __k = _ExtractKey{}(__node._M_v());\n> +\t    __hash_code __code = this->_M_hash_code(__k);\nShould be:\n`__hash_code __code\n\t= _M_src_hash_code(__src.hash_function(), __k, __node);`\n> +++ libstdc++-v3/include/bits/hashtable.h\n> @@ -1211,0 +1267,4 @@\n> +\t  {\n> +\t    const auto& __node = *__prev->_M_next();\n> +\t    const key_type& __k = _ExtractKey{}(__node._M_v());\n> +\t    __hash_code __code = this->_M_hash_code(__k);\nThanks, all four comments should be addressed by #23\n> +++ libstdc++-v3/include/bits/hashtable.h\n> @@ -1162,0 +1169,4 @@\n> +\tauto __n_elt = __src.size();\n> +\tsize_type __first = 1;\n> +\t// For a container of identical type we can use its private members.\n> +\tauto __p = static_cast<__node_ptr>(&__src._M_before_begin);\nIs it safe to cast a __node_base pointer to __node_ptr ?\n\nYou are then calling _M_next() on it which is not a member of __node_base type.\n> +++ libstdc++-v3/include/bits/hashtable.h\n> @@ -1162,0 +1169,4 @@\n> +\tauto __n_elt = __src.size();\n> +\tsize_type __first = 1;\n> +\t// For a container of identical type we can use its private members.\n> +\tauto __p = static_cast<__node_ptr>(&__src._M_before_begin);\nGood point, it should use `_M_nxt` and only cast after that.\n\n\nOn 2024-11-14 16:44:23+00:00, Jonathan Wakely (redi) wrote:\n\nPushed as a147bfcaf17fc3edba7565eafabb78063f0541e6\n\n\nOn 2026-04-22 10:28:04+00:00, Lichenor Forgejo Bot (forge-bot) wrote:\n\n<!-- pr-new-version -->\nVersion 1 of this pull request has been stored. It includes the following commits:\n- libstdc++: Simplify _Hashtable merge functions - 55b7bcc7b8e4b5c08218e0474de4b61addb8faa0\n\n\n\nOn 2026-04-22 10:28:29+00:00, Lichenor Forgejo Bot (forge-bot) wrote:\n\nSent patch series version 1 containing 1 patches to gcc-patches mailing list <gcc-patches@gcc.gnu.org>.\n[Cover letter](https://inbox.sourceware.org/gcc-patches/bmm.hhubaw7tx4.gcc.gcc-TEST.redi.18.1.0@forge-stage.sourceware.org)","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org; dmarc=none (p=none dis=none)\n header.from=forge-stage.sourceware.org","sourceware.org;\n spf=pass smtp.mailfrom=forge-stage.sourceware.org","server2.sourceware.org;\n arc=none smtp.remote-ip=38.145.34.39"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g0wxg4dbvz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 20:51:03 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 5C17440AB69E\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 10:51:01 +0000 (GMT)","from forge-stage.sourceware.org (vm08.sourceware.org [38.145.34.39])\n by sourceware.org (Postfix) with ESMTPS id B4B5B4B7A1DB\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 10:28:33 +0000 (GMT)","from forge-stage.sourceware.org (localhost [IPv6:::1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256)\n (No client certificate requested)\n by forge-stage.sourceware.org (Postfix) with ESMTPS id 8EEC6405B3\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 10:28:33 +0000 (UTC)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 5C17440AB69E","OpenDKIM Filter v2.11.0 sourceware.org B4B5B4B7A1DB"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org B4B5B4B7A1DB","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org B4B5B4B7A1DB","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776853713; cv=none;\n b=aFSlgn0L0I+8sLfDhv/nk7nTuj/Dskw5/hTPnaJt5cTFeVs0dM9xZbUQ880DrP9A+vm3YvmhsRS9XARpHWL4bwxMi2WInXDNz6r9T2ISGXoCPBkzdOiYrkweXRG1EbpovbqmX9Qm+dUGB7Ul0GyWRcxlNwS4FiI6wbhwW/9xCts=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776853713; c=relaxed/simple;\n bh=D5K+fqhmJze9OXg0E19sAioO6e7Y567vyReDW7IqQq8=;\n h=Subject:From:To:Message-ID:MIME-Version:Date;\n b=sTzbVHI5SQnRzGE+FjfBMtyB84VFymPVJ3IjF9uXzQviZLpbeYKuZIh0Q+a4hcvRnem9vHdXPvTVZ8vPTo/RamOiXKy2WAShKb1EyP+y6afdIr+lfrgXYaSLXqGasozpOll+fI8j4swrAeGNXRyEiNzwCxGqkx77l0kgplgWOAQ=","ARC-Authentication-Results":"i=1; server2.sourceware.org","Subject":"[SUMMARY] Re: [PATCH v1 0/1] libstdc++: Simplify _Hashtable merge\n functions","From":"Jonathan Wakely via Sourceware Forge\n <forge-bot+redi@forge-stage.sourceware.org>","To":"gcc-patches mailing list <gcc-patches@gcc.gnu.org>","In-Reply-To":"\n <bmm.hhubaw7tx4.gcc.gcc-TEST.redi.18.1.0@forge-stage.sourceware.org>","Message-ID":"\n <bmm.hhubbsdmc4.gcc.gcc-TEST.redi.18.1.SUMMARY@forge-stage.sourceware.org>","X-Mailer":"batrachomyomachia","X-Requested-Reviewer":"fdumont","X-Pull-Request-Organization":"gcc","X-Pull-Request-Repository":"gcc-TEST","X-Pull-Request":"https://forge.sourceware.org/gcc/gcc-TEST/pulls/18","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"quoted-printable","MIME-Version":"1.0","Date":"Wed, 22 Apr 2026 10:28:33 +0000 (UTC)","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3680467,"web_url":"http://patchwork.ozlabs.org/comment/3680467/","msgid":"<bmm.h1sva4w728.gcc.gcc-TEST.redi.18.399.CMT@forge-stage.sourceware.org>","list_archive_url":null,"date":"2024-11-14T16:44:23","subject":"Re: [PATCH v1 0/1] libstdc++: Simplify _Hashtable merge functions","submitter":{"id":93210,"url":"http://patchwork.ozlabs.org/api/people/93210/","name":"Jonathan Wakely via Sourceware Forge","email":"forge-bot+redi@forge-stage.sourceware.org"},"content":"Pushed as a147bfcaf17fc3edba7565eafabb78063f0541e6\n\n--\nhttps://forge.sourceware.org/gcc/gcc-TEST/pulls/18#issuecomment-399","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org; dmarc=none (p=none dis=none)\n header.from=forge-stage.sourceware.org","sourceware.org;\n spf=pass smtp.mailfrom=forge-stage.sourceware.org","server2.sourceware.org;\n arc=none smtp.remote-ip=38.145.34.39"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g0wxy4JhMz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 20:51:18 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 19DC44162751\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 10:51:16 +0000 (GMT)","from forge-stage.sourceware.org (vm08.sourceware.org [38.145.34.39])\n by sourceware.org (Postfix) with ESMTPS id DA87F4BC89BA\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 10:28:30 +0000 (GMT)","from forge-stage.sourceware.org (localhost [IPv6:::1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256)\n (No client certificate requested)\n by forge-stage.sourceware.org (Postfix) with ESMTPS id B2CB8405B6\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 10:28:30 +0000 (UTC)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 19DC44162751","OpenDKIM Filter v2.11.0 sourceware.org DA87F4BC89BA"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org DA87F4BC89BA","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org DA87F4BC89BA","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776853710; cv=none;\n b=rkkviCaqXK2F2MBVwADqMd7Uoiq/ZWyvo4ThMgtQi7/ENaZmvzoX2XH4Su+cR+TxWUuqv2cRX1bTRq0a5u1q0Ab2qxgIrj2CDnmliFBG9DbVDu4fdALx78rGojaFBXo8GRIPnRmA/iK1PHmHn6gfuNBBEz+rEgcDY9akDRNBa04=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776853710; c=relaxed/simple;\n bh=knwwnNRnj/9hyDWskA7nywIOwJqn9sJcepU2dQP6xFI=;\n h=Subject:From:To:Date:Message-ID:MIME-Version;\n b=giMRxpQ7LOlAE0B1U9YPDngVcrqOXdEYmxX/oOxesqqpDCyW9FkI3GyNlo9KWUZGgQFlUv37wgXUTQIiOhw30qsolzUCgpNBLCGYtgZ7UfNr33p8pNRPCqBursq4VOXe5n3mA+WUb0ViwGGcqlwfkH/Bu/t3HZubOXly2Z349ac=","ARC-Authentication-Results":"i=1; server2.sourceware.org","Subject":"Re: [PATCH v1 0/1] libstdc++: Simplify _Hashtable merge functions","From":"Jonathan Wakely via Sourceware Forge\n <forge-bot+redi@forge-stage.sourceware.org>","To":"gcc-patches mailing list <gcc-patches@gcc.gnu.org>","Date":"Thu, 14 Nov 2024 16:44:23 +0000","Message-ID":"\n <bmm.h1sva4w728.gcc.gcc-TEST.redi.18.399.CMT@forge-stage.sourceware.org>","In-Reply-To":"\n <bmm.hhubaw7tx4.gcc.gcc-TEST.redi.18.1.0@forge-stage.sourceware.org>","X-Mailer":"batrachomyomachia","X-Requested-Reviewer":"fdumont","X-Pull-Request-Organization":"gcc","X-Pull-Request-Repository":"gcc-TEST","X-Pull-Request":"https://forge.sourceware.org/gcc/gcc-TEST/pulls/18","X-Comment":"https://forge.sourceware.org/gcc/gcc-TEST/pulls/18#issuecomment-399","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"7bit","MIME-Version":"1.0","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]