https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61176
--- Comment #7 from Andrew Macleod <amacleod at redhat dot com> --- Thats part of the fun. There is little rhyme nor reason to what includes what right now.. it was purely demand driven over many years. For your current purposes, gimple.h and tree.h were the primary accumulators we have already flattened, but there are a lot of include files which include 4 or 5 or 7 or more other files. Some where flattened, others haven't been tackled yet. We're trying to move to the include what you use model... with .h files containing just the exports for their .c file, and a few module headers which do some aggregation of common/required headers. Eventually including gimple.h alone will compile and provide basic manipulation routines, but you may still need to include other files depending on what you actually require. Plugins can either follow the same model, or could have one giant accumulator which includes everything... It sounds like the latter may be better for the interm, but I would encourage it to revert to the same model once the work is complete.