If Clang runs out of source location address space, produce a more helpful diagnostic than "ran out of source locations" or "translation unit is too large". In addition to that diagnostic, also describe the current source location address space usage, listing the header files that are contributing most to that as well as how many times they were textually entered. The intent is to make it easier to determine if the problem is some kind of misconfiguration (for example, a header isn't properly include-guarded and gets textually entered a lot, or is entered in many AST files), problematic input (for example, a preprocessor metaprogram uses a huge amount of source location space), or a death by a thousand cuts due to the source program just plain being too large.
Also included is a debug pragma to produce the usage report, both to make this more readily testable and to provide visibility into source location address space usage when debugging clang.
Not that I'm opposed, but how did you arrive at 50?