[eigen] internal compiler error in cachefriendlyproduct.h |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
Hi,
The attached patch avoids the internal compiler error, at least in my setup.
But I'm totally unable to see, if this still is to considered as "cache
friendly". :-)
Maybe it is wrong too ?
Hopefully, there is a cachefriendly but more simple to compile form of
this code area.
if not, please confirm something I can use as a work'a'around of that
specific problematic (at least to my compiler ?) part.
Cheers
Frank
P.S.
The last commit #917639 is broken:
------ Build started: Project: test_regression, Configuration: Release
Win32 ------
Compiling...
regression.cpp
c:\develop\eigen\eigen\src/QR/QR.h(65) : error C2144: syntax error :
'int' should be preceded by ';'
c:\develop\eigen\eigen\src/QR/QR.h(161) : see reference to class
template instantiation 'Eigen::QR<MatrixType>' being compiled
c:\develop\eigen\eigen\src/QR/QR.h(65) : error C2059: syntax error : '{'
c:\develop\eigen\eigen\src/QR/QR.h(65) : error C2334: unexpected
token(s) preceding '{'; skipping apparent function body
Build Time 0:01
Build log was saved at "file://c:\Develop\Eigen
TESTS\test\test_regression.dir\Release\BuildLog.htm"
test_regression - 3 error(s), 0 warning(s)
Index: Eigen/src/Core/CacheFriendlyProduct.h
===================================================================
--- Eigen/src/Core/CacheFriendlyProduct.h (revision 917656)
+++ Eigen/src/Core/CacheFriendlyProduct.h (working copy)
@@ -435,8 +435,15 @@
{
/* explicit vectorization */
// process initial unaligned coeffs
- for (int j=0; j<alignedStart; ++j)
- res[j] += ei_pfirst(ptmp0)*lhs0[j] + ei_pfirst(ptmp1)*lhs1[j] + ei_pfirst(ptmp2)*lhs2[j] + ei_pfirst(ptmp3)*lhs3[j];
+ /* explicit vectorization */
+ // process initial unaligned coeffs
+ for (int j=0; j<alignedStart; ++j) {
+ Scalar s = ei_pfirst(ptmp0)*lhs0[j];
+ s += ei_pfirst(ptmp1)*lhs1[j];
+ s += ei_pfirst(ptmp2)*lhs2[j];
+ s += ei_pfirst(ptmp3)*lhs3[j];
+ res[j] += s;
+ }
if (alignedSize>alignedStart)
{