SVD: fix numerous compiler warnings / failures
Reference issue
What does this implement/fix?
Eigen's JacobiSVD and BDCSVD share allocation routines. In some use cases, small fixed size matrix members are not initialized, generating a heap of compiler warnings and occasionally compilation failures in the CI smoketests.
Example warning on GCC 10 with AVX2:
[1959/2008] Building CXX object test/CMakeFiles/bdcsvd_23.dir/bdcsvd.cpp.o
In file included from ../Eigen/Core:313,
from ../Eigen/QR:11,
from ../test/main.h:347,
from ../test/bdcsvd.cpp:26:
../Eigen/src/Core/PlainObjectBase.h: In member function 'void Eigen::BDCSVD<MatrixType, Options>::allocate(Eigen::BDCSVD<MatrixType, Options>::Index, Eigen::BDCSVD<MatrixType, Options>::Index, unsigned int) [with MatrixType_ = Eigen::Matrix<float, 3, 3>; int Options_ = 0]':
../Eigen/src/Core/PlainObjectBase.h:487:7: warning: '<anonymous>' may be used uninitialized in this function [-Wmaybe-uninitialized]
487 | m_storage = std::move(other.m_storage);
| ^~~~~~~~~
And occasionally:
[490/2008] Building CXX object test/CMakeFiles/bdcsvd_25.dir/bdcsvd.cpp.o
FAILED: test/CMakeFiles/bdcsvd_25.dir/bdcsvd.cpp.o
/usr/bin/x86_64-linux-gnu-g++-10 -DEIGEN_TEST_MAX_SIZE=320 -DEIGEN_TEST_PART_25=1 -I../ -pedantic -Wall -Wextra -Wundef -Wcast-align -Wchar-subscripts -Wnon-virtual-dtor -Wunused-local-typedefs -Wpointer-arith -Wwrite-strings -Wformat-security -Wlogical-op -Wdouble-promotion -Wshadow -Wno-psabi -Wno-variadic-macros -Wno-long-long -fno-check-new -fno-common -fstrict-aliasing -mavx2 -mfma -O3 -DNDEBUG -std=c++14 -MD -MT test/CMakeFiles/bdcsvd_25.dir/bdcsvd.cpp.o -MF test/CMakeFiles/bdcsvd_25.dir/bdcsvd.cpp.o.d -o test/CMakeFiles/bdcsvd_25.dir/bdcsvd.cpp.o -c ../test/bdcsvd.cpp
x86_64-linux-gnu-g++-10: fatal error: Killed signal terminated program cc1plus
compilation terminated.
These issues appear to be eliminated with this fix.
Additional information
Edited by Charles Schlosser