Blender 3.2 building fail on Linux

Hey there,

I got a gcc error when I was building the 3.2 branch on CenOS7 with gcc 9.3.0.

[ 45%] Building CXX object source/blender/blenkernel/CMakeFiles/bf_blenkernel.dir/intern/type_conversions.cc.o
In file included from /root/blender-git/blender/source/blender/blenkernel/intern/type_conversions.cc:7:
/root/blender-git/blender/source/blender/functions/FN_multi_function_builder.hh: In instantiation of ‘void blender::fn::materialize_detail::execute_materialized_impl(blender::TypeSequence<ParamTags …>, ElementFn, blender::IndexRange, blender::IndexMask, Chunks&& restrict …) [with ParamTags = {blender::fn::MFParamTag<blender::fn::MFParamCategory::SingleInput, float>, blender::fn::MFParamTag<blender::fn::MFParamCategory::SingleOutput, blender::vec_base<float, 2> >}; ElementFn = blender::fn::CustomMF_SI_SO<In1, Out1>::CustomMF_SI_SO(const char*, ElementFn, ExecPreset) [with ElementFn = blender::bke::add_implicit_conversion(blender::bke::DataTypeConversions&) [with From = float; To = blender::vec_base<float, 2>; To (* ConversionF)(const From&) = blender::bke::float_to_float2]::<lambda(const float&)>; ExecPreset = blender::fn::CustomMF_presets::AllSpanOrSingle; In1 = float; Out1 = blender::vec_base<float, 2>]::<lambda(const float&, blender::vec_base<float, 2>)>; Chunks = {blender::Span, blender::vec_base<float, 2>}]’:
/root/blender-git/blender/source/blender/functions/FN_multi_function_builder.hh:238:30: required from ‘void blender::fn::materialize_detail::execute_materialized(blender::TypeSequence<ParamTags …>, std::index_sequence<I …>, ElementFn, blender::IndexMask, Args&& …) [with ParamTags = {blender::fn::MFParamTag<blender::fn::MFParamCategory::SingleInput, float>, blender::fn::MFParamTag<blender::fn::MFParamCategory::SingleOutput, blender::vec_base<float, 2> >}; long unsigned int …I = {0, 1}; ElementFn = blender::fn::CustomMF_SI_SO<In1, Out1>::CustomMF_SI_SO(const char*, ElementFn, ExecPreset) [with ElementFn = blender::bke::add_implicit_conversion(blender::bke::DataTypeConversions&) [with From = float; To = blender::vec_base<float, 2>; To (* ConversionF)(const From&) = blender::bke::float_to_float2]::<lambda(const float&)>; ExecPreset = blender::fn::CustomMF_presets::AllSpanOrSingle; In1 = float; Out1 = blender::vec_base<float, 2>]::<lambda(const float&, blender::vec_base<float, 2>)>; Args = {blender::VArray, blender::MutableSpan<blender::vec_base<float, 2> >}; std::index_sequence<I …> = std::integer_sequence<long unsigned int, 0, 1>]’
/root/blender-git/blender/source/blender/functions/FN_multi_function_builder.hh:383:49: required from ‘static void blender::fn::CustomMF::execute(ElementFn, ExecPreset, blender::IndexMask, blender::fn::MFParams, std::index_sequence<I …>) [with ElementFn = blender::fn::CustomMF_SI_SO<In1, Out1>::CustomMF_SI_SO(const char
, ElementFn, ExecPreset) [with ElementFn = blender::bke::add_implicit_conversion(blender::bke::DataTypeConversions&) [with From = float; To = blender::vec_base<float, 2>; To (* ConversionF)(const From&) = blender::bke::float_to_float2]::<lambda(const float&)>; ExecPreset = blender::fn::CustomMF_presets::AllSpanOrSingle; In1 = float; Out1 = blender::vec_base<float, 2>]::<lambda(const float&, blender::vec_base<float, 2>)>; ExecPreset = blender::fn::CustomMF_presets::AllSpanOrSingle; long unsigned int …I = {0, 1}; ParamTags = {blender::fn::MFParamTag<blender::fn::MFParamCategory::SingleInput, float>, blender::fn::MFParamTag<blender::fn::MFParamCategory::SingleOutput, blender::vec_base<float, 2> >}; std::index_sequence<I …> = std::integer_sequence<long unsigned int, 0, 1>]’
/root/blender-git/blender/source/blender/functions/FN_multi_function_builder.hh:334:14: required from ‘blender::fn::CustomMF::CustomMF(const char
, ElementFn, ExecPreset) [with ElementFn = blender::fn::CustomMF_SI_SO<In1, Out1>::CustomMF_SI_SO(const char*, ElementFn, ExecPreset) [with ElementFn = blender::bke::add_implicit_conversion(blender::bke::DataTypeConversions&) [with From = float; To = blender::vec_base<float, 2>; To (* ConversionF)(const From&) = blender::bke::float_to_float2]::<lambda(const float&)>; ExecPreset = blender::fn::CustomMF_presets::AllSpanOrSingle; In1 = float; Out1 = blender::vec_base<float, 2>]::<lambda(const float&, blender::vec_base<float, 2>)>; ExecPreset = blender::fn::CustomMF_presets::AllSpanOrSingle; ParamTags = {blender::fn::MFParamTag<blender::fn::MFParamCategory::SingleInput, float>, blender::fn::MFParamTag<blender::fn::MFParamCategory::SingleOutput, blender::vec_base<float, 2> >}]’
/root/blender-git/blender/source/blender/functions/FN_multi_function_builder.hh:437:24: required from ‘blender::fn::CustomMF_SI_SO<In1, Out1>::CustomMF_SI_SO(const char
, ElementFn, ExecPreset) [with ElementFn = blender::bke::add_implicit_conversion(blender::bke::DataTypeConversions&) [with From = float; To = blender::vec_base<float, 2>; To (* ConversionF)(const From&) = blender::bke::float_to_float2]::<lambda(const float&)>; ExecPreset = blender::fn::CustomMF_presets::AllSpanOrSingle; In1 = float; Out1 = blender::vec_base<float, 2>]’
/root/blender-git/blender/source/blender/blenkernel/intern/type_conversions.cc:23:39: required from ‘void blender::bke::add_implicit_conversion(blender::bke::DataTypeConversions&) [with From = float; To = blender::vec_base<float, 2>; To (* ConversionF)(const From&) = blender::bke::float_to_float2]’
/root/blender-git/blender/source/blender/blenkernel/intern/type_conversions.cc:280:70: required from here
/root/blender-git/blender/source/blender/functions/FN_multi_function_builder.hh:166:40: internal compiler error: in dependent_type_p, at cp/pt.c:25534
166 | if constexpr (ParamTag::category == MFParamCategory::SingleInput) {
| ~^~~~~~~~~~~~~~~~~~~~~~~
0x5cab62 dependent_type_p(tree_node*)
…/…/./gcc/cp/pt.c:25534
0x6f7385 dependent_scope_p(tree_node*)
…/…/./gcc/cp/pt.c:25569
0x714598 tsubst_qualified_id
…/…/./gcc/cp/pt.c:15419
0x7057ae tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool)
…/…/./gcc/cp/pt.c:18654
0x704a8d tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool)
…/…/./gcc/cp/pt.c:18626
0x701a94 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
…/…/./gcc/cp/pt.c:17982
0x701450 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
…/…/./gcc/cp/pt.c:17334
0x701278 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
…/…/./gcc/cp/pt.c:17088
0x7013ec tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
…/…/./gcc/cp/pt.c:17389
0x701278 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
…/…/./gcc/cp/pt.c:17088
0x7013ec tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
…/…/./gcc/cp/pt.c:17389
0x704785 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
…/…/./gcc/cp/pt.c:17073
0x704785 tsubst_lambda_expr(tree_node*, tree_node*, int, tree_node*)
…/…/./gcc/cp/pt.c:18301
0x706675 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool)
…/…/./gcc/cp/pt.c:19666
0x70508e tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool)
…/…/./gcc/cp/pt.c:18918
0x701a94 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
…/…/./gcc/cp/pt.c:17982
0x70ef7e tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
…/…/./gcc/cp/pt.c:17073
0x70ef7e gen_elem_of_pack_expansion_instantiation
…/…/./gcc/cp/pt.c:11768
0x70ef7e tsubst_pack_expansion(tree_node*, tree_node*, int, tree_node*)
…/…/./gcc/cp/pt.c:12378
0x70614d tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool)
…/…/./gcc/cp/pt.c:18939
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See https://gcc.gnu.org/bugs/ for instructions.
make[3]: *** [source/blender/blenkernel/CMakeFiles/bf_blenkernel.dir/intern/type_conversions.cc.o] Error 1
make[2]: *** [source/blender/blenkernel/CMakeFiles/bf_blenkernel.dir/all] Error 2
make[1]: *** [all] Error 2
make: *** [all] Error 2

I had no ideas as all was good in the 3.1 branch. Any ideas? Thanks a lot!

Cheers,
Tom

We use GCC 9.3.1 for official builds, maybe it solves this compiler bug?

Thanks for the reply. I’ve updated my gcc to 10.3 and all is good now. That’s nice!

We use GCC 9.3.1 for official builds, maybe it solves this compiler bug?

Yep. I think the new gcc version would help in this case but I haven’t tried 9.3.1 on my side. Btw, the “Minimum Supported Version” gcc is 9.3.0 on the wiki. Not sure whether it is out-of-date.

I’ll bump the minimum version in the wiki. GCC 9.3.1 is what’s in the VFX platform and no one is testing 9.3.0 anymore so it’s likely to break.

1 Like