[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)
       {


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/