On Thu, Sep 5, 2013 at 5:47 PM, Andrew MacLeod <amacl...@redhat.com> wrote: > ok, so to dwell on header file cleanup. When creating new header files for > say, tree-ssa-ter.h, what other include files should we make assumptions > have already been included... or should we make none? > For instance, the header files tree-ssa-ter.h would require system.h, > bitmap.h, tree-ssa-live.h, and gimple.h (soon to be gimple-core.h I hope :-) > to parse the prototypes
Why bitmap.h? bitmap is in coretypes.h. Anyway, a little more side-stepping: on my wishlist is making the various data types (sbitmap, bitmap, sparseset, etc.) independent of gcc headers as much as possible, and having a single header, gccadt.h say, that provides most/all generic data structures (e.g. also including hash tables). > Of course, trimming the .c file include list with some intelligence would > help minimize this, but not completely eliminate it. As you may have noticed, I tried trimming the #include lists in many .c files last year. It's a hard but worthwhile job: You find some headers have to be included before others, or some headers are used by some .c file but they don't #include it. Instead they receive it through an #include in some .h file but nothing defined directly, i.e. not via #include, is used in the .c file. > thats just an example, I don't think we need a tree-ssa-ter.h. There are > only 3 exported functions. 2 are used exclusively in tree-outof-ssa.c and > one is used in expr.c (a reuse of the is_replaceable_p function.) > The 2 that are exclusive to tree-out-ssa.c could simple have the prototypes > in tree-outof-ssa.c, That seems like the best thing to do for single > client's? Not really. It's a single client now, but if it's an exported interface of some kind, then why should its use stay limited to a single client? Either some function is exported and therefore should have a prototype in a .h file, or something is local to a file and no prototype is necessary (in most cases anyway). > The other function could be moved from tree-ssa-ter.c to expr.c, and the > prototype exported in expr.h and used in tree-ssa-ter.c Makes sense. Ciao! Steven