Interesting to see Microsoft is getting agnostic about compilers too. “Clang and LLVM didn’t really have much in the way of Windows support. This was true in superficial ways—Clang supports different command-line options to Microsoft’s compiler, for example, so couldn’t work as a drop-in replacement—and in many deeper ways. For example, Windows’ tooling is all built around the PDB (“program database”) file format for holding debug information. Microsoft’s debuggers and a wide range of third-party tools all assume that Windows programs will have their debug data available as PDB files. LLVM, however, couldn’t produce PDBs. As with almost any large software project, the Windows APIs also require certain non-standard extensions, which Clang had to be altered to support.
While Google did the lion’s share of the compiler development to make this happen, some of the necessary work was done by Microsoft. The PDB format was largely undocumented (and the documentation that existed was very stale), so LLVM developers asked for help: Microsoft responded by publishing a big chunk of source used to produce PDBs. Microsoft has also worked to ensure that both the Windows headers and the C++ libraries work with Clang as well as its own compiler.
Google has not yet moved entirely to the LLVM toolchain. Chrome for Windows still uses the Microsoft linker (the part of the toolchain that combines the compiled source code into a single executable or DLL), and it still uses the Microsoft C++ library. In time, Google plans to switch to the LLVM linker and may use Clang C++ library, too.”