Move the implementation of the toString function from llvm/Support/Error.h to the source file,
which allows us to move #include "llvm/ADT/StringExtras.h" to the source file as well.
As Error.h is present in a large number of translation units this means we are unnecessarily bringing in the
contents of StringExtras.h - itself a large file with lots of includes - and slowing down compilation.
Includes have been added to source/header files that are needed but were being transitively included. The
majority needed StringExtras.h but a few only required a smaller header: APInt.h, APSInt.h, or
This reduces the total number of preprocessing tokens across the LLVM source files in lib from (roughly)
1,920,413,050 to 1,903,629,230 - a reduction of ~0.87%. This should result in a small improvement in compilation