ned14/llfio

ICE with /std:c++latest on MSVC 16.8.2

yuyoyuppe opened this issue · 4 comments

Just including llfio.hpp triggers the following:

llfio\windows\include\llfio\v2.0\algorithm\../detail/impl/traverse.ipp(462,1): fatal error C1001: Internal compiler error.
3>(compiler file 'D:\a01\_work\6\s\src\vctools\Compiler\CxxFE\sl\p1\c\p0gettok.c', line 9634)

changing std to /std:c++17 fixes it. We should report it to VC team, though perhaps it's possible to restructure that function as a workaround in the meantime 🙂

ned14 commented

Already reported to https://developercommunity.visualstudio.com/content/problem/1264150/internal-compiler-error-in-msvc-1928293330.html. Another workaround is just use VS2019 16.7, which works just fine.

According to the issue commentary, Microsoft cannot reproduce the ICE. I suspect it is because they are using the _hl targets. I'll install 16.8 and see if I can get them an exact repro.

Microsoft cannot reproduce the ICE

I think that's because currently cmake generates .vcxprojs with /std:c++17 by default, which works fine. I've reproduced the issue like this:

  • clone llfio and submodules
  • mkdir build & cd build
  • cmake -G “Visual Studio 16 2019” -A x64 ../
  • open VS and manually override std to /std:c++latest just for llfio_dl project
  • build llfio_dl
ned14 commented

I'm surprised you found it building at all on latest MSVC for non _hl target. When I tried, the Coroutines detection blew up. I'll look into fixing that tomorrow morning.

ned14 commented

Non _hl targets ought to now be VS2019.8 compatible. Microsoft say that VS2019.9 preview no longer ICEs, so I expect the next point release of VS2019.8 will fix the ICE. Thanks for reporting this issue!