[RFC] Clang 17.0.6 would be minimum version to build LLVM in C++20

Is there a specific C++20 feature that requires clang 17?

Until Clang 17, support for C++20 was extremely buggy. I would not recommend that anyone use previous versions in C++20 mode – it’s just not worth the problems.

There were multiple serious issues for consteval, concepts, and other new features. For Google’s internal codebase, these caused problems just trying to switch from -std=c++17 to -std=c++20 – including silent miscompiles. Our codebase didn’t even use C++20 features, we were just switching the compilation mode (which introduced usage of C++20 features via the stdlib headers.)

For reasonable C++20 compiler support, I’ve been making a recommendation of the following minimum compiler versions:

  • Clang 17
  • GCC 12
  • MSVC 17.2

…and don’t use coroutines or modules yet, both of which are not yet fully-baked.

So, this proposal would really only raise the realistic minimum for building LLVM in C++20 mode from “17.0.0” to “17.0.6”.

6 Likes