Internal compiler occurs with MSVC2015 CTP1 on below code Note: * ctp1 could be found at https://www.visualstudio.com/news/vs2015-update1-vs * The code run gracefully on MSVC2013 and MSVC2015 * Test done on 3.3* stable branch and 3.4 Alpha Code to reproduce: void test_crashmsvc2015cpt1() { typedef Eigen::Matrix< Real, Eigen::Dynamic, Eigen::Dynamic > Matrix; typedef Eigen::Matrix< Real, Eigen::Dynamic, 1 > Vector; int nbInputPlanes = 1, int nbOutputPlanes = 32, int width = 32, int height=32, int kernelSizeX = 5, int kernelSizeY = 5, int shiftX = 1, int shiftY = 1; const unsigned int nbRows = nbInputPlanes*height; const unsigned int nbCols = width; Matrix inputContiguous(nbRows, nbCols); Matrix kernels(nbInputPlanes, 3*3*nbOutputPlanes) Vector bias(nbOutputPlanes); const int outWidth = (width - 3) / 1+ 1; const int outHeight = (height - 3) / 1+ 1; Matrix result(nbOutputPlanes * outHeight, outWidth); int outputRow = 0; //Invariant outputRow = y*nbOutputPlanes //For each Y-output row for (int y = 0; y < outHeight; ++y) { const Matrix intermediate = kernels.transpose() * input.middleRows( nbInputPlanes * shiftY * y, nbInputPlanes * kernelSizeY); const float * intermediateData = intermediate.data(); for (int k = 0; k < nbOutputPlanes; ++k) { result.row(outputRow + k).setConstant(bias(k)); result.row(outputRow + k) += intermediate.Map( intermediateData, kernelSizeX, outWidth, Stride(intermediate.rows(), 1 + intermediate.rows())).colwise().sum(); intermediateData += kernelSizeX; } outputRow += nbOutputPlanes; } } Error from MSVC \eigen\src\core\products\generalmatrixmatrix.h(62): fatal error C1001: An internal error has occurred in the compiler. 1> (compiler file 'f:\dd\vctools\compiler\utc\src\p2\main.c', line 246) Regards TR
This issue has to be reported to MSVC team, especially if MSVC2015 does not trigger the ICE as this mean they introduced a regression.
Thanks for your quick answer I forward the bug to MSVC team Regards TR
Do you have a reference on the MSVC bug?
Same problem. It can be fixed by changing in generalmatrixmatrix.h: 151 #pragma omp atomic 152 --(info[i].users); to 151 #pragma omp atomic 152 info[i].users -= 1;
*** Bug 1125 has been marked as a duplicate of this bug. ***
devel: https://bitbucket.org/eigen/eigen/commits/6d8be48 3.2: https://bitbucket.org/eigen/eigen/commits/7483950f
btw, thanks Nikolai for the workaround, and Benoit for pushing it.
*** Bug 1131 has been marked as a duplicate of this bug. ***
-- GitLab Migration Automatic Message -- This bug has been migrated to gitlab.com's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.com/libeigen/eigen/issues/1096.