<h3 dir="auto">Description</h3>
<p dir="auto">When multiplying two sparse BCOO matrices it seems the result always stores explicit zero-entries even when the corresponding row/column of <code class="notranslate">a</code> and <code class="notranslate">b</code> are all zero:</p>
<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="import jax
import numpy as np
a = jax.experimental.sparse.BCOO.fromdense(np.diag([1., 2.]))
b = jax.experimental.sparse.BCOO.fromdense(np.diag([3., 4.]))
(a @ b).data, (a @ b).indices
&gt;&gt;&gt; (Array([3., 0., 0., 8.], dtype=float64),
     Array([[0, 0],
            [0, 1],
            [1, 0],
            [1, 1]], dtype=int32))"><pre class="notranslate"><span class="pl-k">import</span> <span class="pl-s1">jax</span>
<span class="pl-k">import</span> <span class="pl-s1">numpy</span> <span class="pl-k">as</span> <span class="pl-s1">np</span>
<span class="pl-s1">a</span> <span class="pl-c1">=</span> <span class="pl-s1">jax</span>.<span class="pl-s1">experimental</span>.<span class="pl-s1">sparse</span>.<span class="pl-v">BCOO</span>.<span class="pl-en">fromdense</span>(<span class="pl-s1">np</span>.<span class="pl-en">diag</span>([<span class="pl-c1">1.</span>, <span class="pl-c1">2.</span>]))
<span class="pl-s1">b</span> <span class="pl-c1">=</span> <span class="pl-s1">jax</span>.<span class="pl-s1">experimental</span>.<span class="pl-s1">sparse</span>.<span class="pl-v">BCOO</span>.<span class="pl-en">fromdense</span>(<span class="pl-s1">np</span>.<span class="pl-en">diag</span>([<span class="pl-c1">3.</span>, <span class="pl-c1">4.</span>]))
(<span class="pl-s1">a</span> @ <span class="pl-s1">b</span>).<span class="pl-s1">data</span>, (<span class="pl-s1">a</span> @ <span class="pl-s1">b</span>).<span class="pl-s1">indices</span>
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> (<span class="pl-v">Array</span>([<span class="pl-c1">3.</span>, <span class="pl-c1">0.</span>, <span class="pl-c1">0.</span>, <span class="pl-c1">8.</span>], <span class="pl-s1">dtype</span><span class="pl-c1">=</span><span class="pl-s1">float64</span>),
     <span class="pl-v">Array</span>([[<span class="pl-c1">0</span>, <span class="pl-c1">0</span>],
            [<span class="pl-c1">0</span>, <span class="pl-c1">1</span>],
            [<span class="pl-c1">1</span>, <span class="pl-c1">0</span>],
            [<span class="pl-c1">1</span>, <span class="pl-c1">1</span>]], <span class="pl-s1">dtype</span><span class="pl-c1">=</span><span class="pl-s1">int32</span>))</pre></div>
<p dir="auto">Expected output:</p>
<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="&gt;&gt;&gt; (Array([3., 8.], dtype=float64),
     Array([[0, 0],
            [1, 1]], dtype=int32))"><pre class="notranslate"><span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> (<span class="pl-v">Array</span>([<span class="pl-c1">3.</span>, <span class="pl-c1">8.</span>], <span class="pl-s1">dtype</span><span class="pl-c1">=</span><span class="pl-s1">float64</span>),
     <span class="pl-v">Array</span>([[<span class="pl-c1">0</span>, <span class="pl-c1">0</span>],
            [<span class="pl-c1">1</span>, <span class="pl-c1">1</span>]], <span class="pl-s1">dtype</span><span class="pl-c1">=</span><span class="pl-s1">int32</span>))</pre></div>
<h3 dir="auto">What jax/jaxlib version are you using?</h3>
<p dir="auto">0.4.8</p>
<h3 dir="auto">Which accelerator(s) are you using?</h3>
<p dir="auto">GPU</p>
<h3 dir="auto">Additional system info</h3>
<p dir="auto"><em>No response</em></p>
<h3 dir="auto">NVIDIA GPU info</h3>
<p dir="auto"><em>No response</em></p>
<p dir="auto">Please:</p>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Check for duplicate issues.</li>
</ul>
<p dir="auto">Does jaxlib support building with GCC 11? I'm seeing a number of errors.</p>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> If applicable, include full error messages/tracebacks.</li>
</ul>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ERROR: /build/output/external/org_tensorflow/tensorflow/tools/proto_text/BUILD:31:10: Linking external/org_tensorflow/tensorflow/tools/proto_text/gen_proto_text_functions failed: (Exit 1): crosstool_wrapper_driver_is_not_gcc failed: error executing command external/local_config_cuda/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc @bazel-out/k8-opt/bin/external/org_tensorflow/tensorflow/tools/proto_text/gen_proto_text_functions-2.params
/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38/bin/ld: /nix/store/x0gmnlsh4mzfsngvxj9ahsc1vm5sdrg5-protobuf-3.19.3/lib/libprotobuf.a(parser.o): in function `std::_Hashtable&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::pair&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const, google::protobuf::FieldDescriptorProto_Type&gt;, std::allocator&lt;std::pair&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const, google::protobuf::FieldDescriptorProto_Type&gt; &gt;, std::__detail::_Select1st, std::equal_to&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::hash&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits&lt;true, false, true&gt; &gt;::_M_rehash(unsigned long, unsigned long const&amp;)':
(.text._ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N6google8protobuf25FieldDescriptorProto_TypeEESaISB_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_rehashEmRKm[_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N6google8protobuf25FieldDescriptorProto_TypeEESaISB_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_rehashEmRKm]+0xff): undefined reference to `std::__throw_bad_array_new_length()'
/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38/bin/ld: /nix/store/x0gmnlsh4mzfsngvxj9ahsc1vm5sdrg5-protobuf-3.19.3/lib/libprotobuf.a(descriptor.o): in function `bool google::protobuf::InsertIfNotPresent&lt;std::unordered_map&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt;, google::protobuf::FieldDescriptor const*, google::protobuf::(anonymous namespace)::PointerStringPairHash, std::equal_to&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; &gt;, std::allocator&lt;std::pair&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; const, google::protobuf::FieldDescriptor const*&gt; &gt; &gt; &gt;(std::unordered_map&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt;, google::protobuf::FieldDescriptor const*, google::protobuf::(anonymous namespace)::PointerStringPairHash, std::equal_to&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; &gt;, std::allocator&lt;std::pair&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; const, google::protobuf::FieldDescriptor const*&gt; &gt; &gt;*, std::unordered_map&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt;, google::protobuf::FieldDescriptor const*, google::protobuf::(anonymous namespace)::PointerStringPairHash, std::equal_to&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; &gt;, std::allocator&lt;std::pair&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; const, google::protobuf::FieldDescriptor const*&gt; &gt; &gt;::value_type::first_type const&amp;, std::unordered_map&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt;, google::protobuf::FieldDescriptor const*, google::protobuf::(anonymous namespace)::PointerStringPairHash, std::equal_to&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; &gt;, std::allocator&lt;std::pair&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; const, google::protobuf::FieldDescriptor const*&gt; &gt; &gt;::value_type::second_type const&amp;) [clone .isra.0]':
(.text+0xd33): undefined reference to `std::__throw_bad_array_new_length()'
/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38/bin/ld: /nix/store/x0gmnlsh4mzfsngvxj9ahsc1vm5sdrg5-protobuf-3.19.3/lib/libprotobuf.a(descriptor.o): in function `std::pair&lt;std::__detail::_Node_iterator&lt;google::protobuf::Symbol, true, true&gt;, bool&gt; std::_Hashtable&lt;google::protobuf::Symbol, google::protobuf::Symbol, std::allocator&lt;google::protobuf::Symbol&gt;, std::__detail::_Identity, google::protobuf::(anonymous namespace)::FieldsByNumberEq, google::protobuf::(anonymous namespace)::FieldsByNumberHash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits&lt;true, true, true&gt; &gt;::_M_insert&lt;google::protobuf::Symbol, std::__detail::_AllocNode&lt;std::allocator&lt;std::__detail::_Hash_node&lt;google::protobuf::Symbol, true&gt; &gt; &gt; &gt;(google::protobuf::Symbol&amp;&amp;, std::__detail::_AllocNode&lt;std::allocator&lt;std::__detail::_Hash_node&lt;google::protobuf::Symbol, true&gt; &gt; &gt; const&amp;, std::integral_constant&lt;bool, true&gt;) [clone .constprop.0] [clone .isra.0]':
(.text+0x31bf): undefined reference to `std::__throw_bad_array_new_length()'
/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38/bin/ld: /nix/store/x0gmnlsh4mzfsngvxj9ahsc1vm5sdrg5-protobuf-3.19.3/lib/libprotobuf.a(descriptor.o): in function `google::protobuf::FileDescriptorTables::AddAliasUnderParent(void const*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, google::protobuf::Symbol)':
(.text+0x4373): undefined reference to `std::__throw_bad_array_new_length()'
/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38/bin/ld: /nix/store/x0gmnlsh4mzfsngvxj9ahsc1vm5sdrg5-protobuf-3.19.3/lib/libprotobuf.a(descriptor.o): in function `google::protobuf::DescriptorPool::Tables::AddSymbol(std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, google::protobuf::Symbol)':
(.text+0x109cf): undefined reference to `std::__throw_bad_array_new_length()'
/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38/bin/ld: /nix/store/x0gmnlsh4mzfsngvxj9ahsc1vm5sdrg5-protobuf-3.19.3/lib/libprotobuf.a(descriptor.o):(.text+0x1ee0f): more undefined references to `std::__throw_bad_array_new_length()' follow
collect2: error: ld returned 1 exit status
Target //build:build_wheel failed to build
Use --verbose_failures to see the command lines of failed build steps.
ERROR: /build/output/external/org_tensorflow/tensorflow/core/framework/BUILD:1400:31 Middleman _middlemen/@org_Utensorflow_S_Stensorflow_Score_Sframework_Cattr_Uvalue_Uproto_Utext-BazelCppSemantics_build_arch_k8-opt failed: (Exit 1): crosstool_wrapper_driver_is_not_gcc failed: error executing command external/local_config_cuda/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc @bazel-out/k8-opt/bin/external/org_tensorflow/tensorflow/tools/proto_text/gen_proto_text_functions-2.params"><pre class="notranslate"><code class="notranslate">ERROR: /build/output/external/org_tensorflow/tensorflow/tools/proto_text/BUILD:31:10: Linking external/org_tensorflow/tensorflow/tools/proto_text/gen_proto_text_functions failed: (Exit 1): crosstool_wrapper_driver_is_not_gcc failed: error executing command external/local_config_cuda/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc @bazel-out/k8-opt/bin/external/org_tensorflow/tensorflow/tools/proto_text/gen_proto_text_functions-2.params
/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38/bin/ld: /nix/store/x0gmnlsh4mzfsngvxj9ahsc1vm5sdrg5-protobuf-3.19.3/lib/libprotobuf.a(parser.o): in function `std::_Hashtable&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::pair&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const, google::protobuf::FieldDescriptorProto_Type&gt;, std::allocator&lt;std::pair&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const, google::protobuf::FieldDescriptorProto_Type&gt; &gt;, std::__detail::_Select1st, std::equal_to&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::hash&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits&lt;true, false, true&gt; &gt;::_M_rehash(unsigned long, unsigned long const&amp;)':
(.text._ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N6google8protobuf25FieldDescriptorProto_TypeEESaISB_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_rehashEmRKm[_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N6google8protobuf25FieldDescriptorProto_TypeEESaISB_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_rehashEmRKm]+0xff): undefined reference to `std::__throw_bad_array_new_length()'
/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38/bin/ld: /nix/store/x0gmnlsh4mzfsngvxj9ahsc1vm5sdrg5-protobuf-3.19.3/lib/libprotobuf.a(descriptor.o): in function `bool google::protobuf::InsertIfNotPresent&lt;std::unordered_map&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt;, google::protobuf::FieldDescriptor const*, google::protobuf::(anonymous namespace)::PointerStringPairHash, std::equal_to&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; &gt;, std::allocator&lt;std::pair&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; const, google::protobuf::FieldDescriptor const*&gt; &gt; &gt; &gt;(std::unordered_map&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt;, google::protobuf::FieldDescriptor const*, google::protobuf::(anonymous namespace)::PointerStringPairHash, std::equal_to&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; &gt;, std::allocator&lt;std::pair&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; const, google::protobuf::FieldDescriptor const*&gt; &gt; &gt;*, std::unordered_map&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt;, google::protobuf::FieldDescriptor const*, google::protobuf::(anonymous namespace)::PointerStringPairHash, std::equal_to&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; &gt;, std::allocator&lt;std::pair&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; const, google::protobuf::FieldDescriptor const*&gt; &gt; &gt;::value_type::first_type const&amp;, std::unordered_map&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt;, google::protobuf::FieldDescriptor const*, google::protobuf::(anonymous namespace)::PointerStringPairHash, std::equal_to&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; &gt;, std::allocator&lt;std::pair&lt;std::pair&lt;void const*, google::protobuf::stringpiece_internal::StringPiece&gt; const, google::protobuf::FieldDescriptor const*&gt; &gt; &gt;::value_type::second_type const&amp;) [clone .isra.0]':
(.text+0xd33): undefined reference to `std::__throw_bad_array_new_length()'
/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38/bin/ld: /nix/store/x0gmnlsh4mzfsngvxj9ahsc1vm5sdrg5-protobuf-3.19.3/lib/libprotobuf.a(descriptor.o): in function `std::pair&lt;std::__detail::_Node_iterator&lt;google::protobuf::Symbol, true, true&gt;, bool&gt; std::_Hashtable&lt;google::protobuf::Symbol, google::protobuf::Symbol, std::allocator&lt;google::protobuf::Symbol&gt;, std::__detail::_Identity, google::protobuf::(anonymous namespace)::FieldsByNumberEq, google::protobuf::(anonymous namespace)::FieldsByNumberHash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits&lt;true, true, true&gt; &gt;::_M_insert&lt;google::protobuf::Symbol, std::__detail::_AllocNode&lt;std::allocator&lt;std::__detail::_Hash_node&lt;google::protobuf::Symbol, true&gt; &gt; &gt; &gt;(google::protobuf::Symbol&amp;&amp;, std::__detail::_AllocNode&lt;std::allocator&lt;std::__detail::_Hash_node&lt;google::protobuf::Symbol, true&gt; &gt; &gt; const&amp;, std::integral_constant&lt;bool, true&gt;) [clone .constprop.0] [clone .isra.0]':
(.text+0x31bf): undefined reference to `std::__throw_bad_array_new_length()'
/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38/bin/ld: /nix/store/x0gmnlsh4mzfsngvxj9ahsc1vm5sdrg5-protobuf-3.19.3/lib/libprotobuf.a(descriptor.o): in function `google::protobuf::FileDescriptorTables::AddAliasUnderParent(void const*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, google::protobuf::Symbol)':
(.text+0x4373): undefined reference to `std::__throw_bad_array_new_length()'
/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38/bin/ld: /nix/store/x0gmnlsh4mzfsngvxj9ahsc1vm5sdrg5-protobuf-3.19.3/lib/libprotobuf.a(descriptor.o): in function `google::protobuf::DescriptorPool::Tables::AddSymbol(std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, google::protobuf::Symbol)':
(.text+0x109cf): undefined reference to `std::__throw_bad_array_new_length()'
/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38/bin/ld: /nix/store/x0gmnlsh4mzfsngvxj9ahsc1vm5sdrg5-protobuf-3.19.3/lib/libprotobuf.a(descriptor.o):(.text+0x1ee0f): more undefined references to `std::__throw_bad_array_new_length()' follow
collect2: error: ld returned 1 exit status
Target //build:build_wheel failed to build
Use --verbose_failures to see the command lines of failed build steps.
ERROR: /build/output/external/org_tensorflow/tensorflow/core/framework/BUILD:1400:31 Middleman _middlemen/@org_Utensorflow_S_Stensorflow_Score_Sframework_Cattr_Uvalue_Uproto_Utext-BazelCppSemantics_build_arch_k8-opt failed: (Exit 1): crosstool_wrapper_driver_is_not_gcc failed: error executing command external/local_config_cuda/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc @bazel-out/k8-opt/bin/external/org_tensorflow/tensorflow/tools/proto_text/gen_proto_text_functions-2.params
</code></pre></div>
<p dir="auto">What do I need to do in order to build with GCC 11?</p>