Let me try starting over without mentioning Tablegen 
Aw, but i had a list of issues, such as:
- tablegen doesn’t generate .d files
- CMake is set up with far reaching deps on .td files, so changing Options.td rebuilds the backends, and adding an ARM intrinsic rebuilds X86 or vice versa
- All the tablegen backends are linked in to a single binary, so if you are hacking on tablegen and change the disassemblers backend, you rebuild the SelectionDAG code
Is Support too big, and if so should we consider breaking it up?
Yes please. Even if it didn’t have a signifiant impact on build time, its become something of a dumping ground for code which would otherwise cause layering violations if put somewhere else.
The way I see it, there’s a bunch of functionality which effectively just wraps the platform, (i.e., anything which abstracts away posix/unix vs Windows vs macOS). This is often stuff like file systems, streams, the host itself and probably a few others. Then there is obviously ADT. There are utilities which basically everyone uses like Error, Debug, Statistic and stack trace. There are utilities which only tools should use, like CommandLine, and utilities only used by a few projects right now, but maybe more in future, like Threading.
Then there are things which should now live elsewhere because perhaps other libraries exist now which didn’t before. ELF.h and others should be in libObjectFile. If they can’t be there, then we should have a very good reason why not.
BranchProbability shouldn’t be there at all but probably is due to layering, and likely the same goes for TargetRegistry. We should fix that. Same goes for ARM* which should all be in the ARM backend. Dwarf should be in libDebugInfoDWARF. *DeltaAlgorithm aren’t even used outside of tests!
Anyway, sorry for the brain dump. But yes, this has grown in to something which can be cleaner. Perhaps Support will still exist to wrap posix and friends, hopefully with ADT separately, but we should also move a bunch of things to better suited libraries if we can.
Cheers,
Pete