When using multiple variadic results of differing sizes, using AttrSizedResultSegments is currently a requirement. Unlike AttrSizedOperandSegments however, it is not created within the default builders created by tablegen. Instead, one has to explicitly add DenseI32ArrayAttr:$result_segments_sizes as argument and then also explicitly specify all the sizes when using the builder from C++.
This patch fixes that redundancy, by making the builder generate the attribute in similar fashion as it already does for AttrSizedOperandSegments. The sizes required are simply gathered from the result type arguments of the builder.
if {} else if {} else {} seems cleaner to me here since they're all one liners