On Fri, Jul 13, 2012 at 3:38 PM, Steven Bosscher <stevenb....@gmail.com> wrote: > Hello, > > The attached monster patch re-organizes a lot of includes to avoid > dependencies on tree-pass.h just for having dump_file available. > > I've used the following "rules" to decide what needs to go where: > > * tree-dump.h should be independent of the pass manager, i.e. not > include tree-pass.h. > > * passes that do not need dumping of GENERIC do not need tree-dump.h either. > > * Any file that defines an opt_pass may include tree-pass.h. > > * If a file includes tree-pass.h, it does not need to include > dumpfile.h or timevar.h, because tree-pass.h provides these already > (the *opt_pass structs depend on them) > > * If a file does not include tree-pass.h, but it needs dump_file, it > should include dumpfile.h. Likewise for timevar.h. This category of > files are the implementation files for supporting code, like alias.c > and cfg*.c. > > With those rules in mind, my hackathon started and the result is > attached. I had to move a few functions around, but not very much. I > also uncovered a bug in one of the DF files, where it was trying to > use get_insns without including emit-rtl.h. No DF file should emit > RTL, so I don't want to include emit-rtl.h there, so I removed that > dumping (which was only for debugging purposes anyway, and obviously > not tested in a while or I wouldn't have run into this problem to > begin with :-) > > Bootstrapped&tested on powerpc64-unknown-linux-gnu and on > x86_64-unknown-linux-gnu. OK for trunk?
You moved get_ref_base_and_extent to tree.c - any reason for that? It is similar to get_inner_reference which is in expr.c and similar to get_addr_base_and_unit_offset which is still in tree-dfa.c. I'd prefer to have it stay where it is for this patch. Thus, ok with that change. Thanks, Richard. > Ciao! > Steven > > > * system.h (dump_file): Do not define. > * tree-pass.h: Include dumpfile.h, which is a new file containing... > (enum tree_dump_index, TDF_*, get_dump_file_name, dump_enabled_p, > dump_initialized_p, dump_begin, dump_end, dump_node, dump_switch_p, > dump_flag_name, dump_file, dump_flags, dump_file_name, > get_dump_file_info, struct dump_file_info): all of this, moved to... > * dumpfile.h: Here, new file. > * tree-dump.h: Include dumpfile.h, but not tree-pass.h. > (dump_stmt): Remove prototype for C++ specific function. > (dump_enumerated_decls): Move prototype from here... > * tree-flow.h (dump_enumerated_decls): ... to here. > (get_ref_base_and_extent) Move prototype from here ... > * tree.h (get_ref_base_and_extent) ... to here. > * tree-ssa-live.c: Do not inclde tree-pretty-print.h, because > gimple-pretty-print.h is enough. Do not include tree-dump.h, > include timevar.h and dumpfile.h instead. > (struct numbered_tree_d, compare_decls_by_uid, > dump_enumerated_decls_push, dump_enumerated_decls): Move from here ... > * tree-dfa.c:(struct numbered_tree_d, compare_decls_by_uid, > dump_enumerated_decls_push, dump_enumerated_decls):... to here. > Do not include timevar.h. > (get_ref_base_and_extent): Move from here ... > * tree.c (get_ref_base_and_extent): ... to here. > Do not include timevar.h. > * tree-cfg.c: Do not include langhooks.h, tree-pretty-print.h, and > timevar.h. > (dump_cfg_stats): Use current_function_name. > (gimple_cfg2vcg): Likewise. > (dump_function_to_file): Likewise. > * df-scan.c: Do not include tree-pass.h and timevar.h. > Include dumpfile.h. > (df_entry_block_bitmap_verify, df_exit_block_bitmap_verify): Do not > use print_current_pass. > * df-problems.c: Include dumpfile.h. > Always define REG_DEAD_DEBUGGING, avoid #ifdef code, because it > leads to errors in the code not selected. > (df_note_compute): Do not print_rtl_with_bb here. Fix compilation > bug if REG_DEAD_DEBUGGING is not 0, get_insns is not available here. > * lcm.c: Include dumpfile.h. > Remove obsolete include of insn-attr.h. > * dojump.c (do_compare_rtx_and_jump): Remove failure printing for > missing probability notes. > * stmt.c: Include dumpfile.h. > (emit_case_decision_tree): Re-enable printing expand details only > if TDF_DETAILS. > * alias.c, auto-inc-dec.c, bb-reorder.c, caller-save.c, cfg.c, > cfgcleanup.c, cfgexpand.c, cfgloop.c, cfgloopmanip.c, cgraph.c, > cgraphclones.c, cgraphunit.c, combine.c, combine-stack-adj.c, > coverage.c, cprop.c, cse.c, cselib.c, dbgcnt.c, dce.c, df-core.c, > dse.c, dwarf2out.c, emit-rtl.c, except.c, expr.c, final.c, > function.c, fwprop.c, gcse.c, gimple-fold.c, > gimple-pretty-print.c, gimple-ssa-strength-reduction.c, > gimplify.c, graphite-blocking.c, graphite-clast-to-gimple.c, > graphite-dependences.c, graphite-interchange.c, > graphite-optimize-isl.c, graphite-poly.c, > graphite-sese-to-poly.c, haifa-sched.c, hw-doloop.c, ifcvt.c, > ipa.c, ipa-cp.c, ipa-inline-analysis.c, ipa-inline.c, > ipa-inline-transform.c, ipa-prop.c, ipa-pure-const.c, > ipa-reference.c, ipa-split.c, ipa-utils.c, ira.c, ira-emit.c, > jump.c, loop-doloop.c, loop-init.c, loop-invariant.c, loop-iv.c, > loop-unroll.c, loop-unswitch.c, lower-subreg.c, > lto-section-out.c, lto-streamer-in.c, matrix-reorg.c, mcf.c, > mode-switching.c, modulo-sched.c, omega.c, omp-low.c, passes.c, > postreload.c, postreload-gcse.c, predict.c, print-rtl.c, > print-tree.c, profile.c, recog.c, ree.c, regcprop.c, reginfo.c, > regmove.c, regrename.c, reg-stack.c, reload1.c, reorg.c, > sched-rgn.c, sched-vis.c, sel-sched.c, sel-sched-ir.c, > store-motion.c, tracer.c, trans-mem.c, tree-affine.c, > tree-call-cdce.c, tree-cfgcleanup.c, tree-chrec.c, > tree-data-ref.c, tree-diagnostic.c, tree-dump.c, > tree-eh.c, tree-flow-inline.h, tree-if-conv.c, tree-into-ssa.c, > tree-mudflap.c, tree-nrv.c, tree-object-size.c, > tree-optimize.c, tree-outof-ssa.c, tree-predcom.c, > tree-pretty-print.c, tree-profile.c, tree-scalar-evolution.c, > tree-sra.c, tree-ssa-address.c, tree-ssa-alias.c, tree-ssa.c, > tree-ssa-ccp.c, tree-ssa-coalesce.c, tree-ssa-copy.c, > tree-ssa-copyrename.c,, tree-ssa-dce.c, tree-ssa-dom.c, > tree-ssa-dse.c, tree-ssa-forwprop.c, tree-ssa-ifcombine.c, > tree-ssa-loop.c, tree-ssa-loop-ch.c, tree-ssa-loop-im.c, > tree-ssa-loop-ivcanon.c, tree-ssa-loop-ivopts.c, > tree-ssa-loop-manip.c, tree-ssa-loop-niter.c, > tree-ssa-loop-prefetch.c, tree-ssa-loop-unswitch.c, > tree-ssa-math-opts.c, tree-ssa-operands.c, tree-ssa-phiopt.c, > tree-ssa-phiprop.c, tree-ssa-pre.c, tree-ssa-propagate.c, > tree-ssa-reassoc.c, tree-ssa-sccvn.c, tree-ssa-sink.c, > tree-ssa-structalias.c, tree-ssa-tail-merge.c, tree-ssa-ter.c, > tree-ssa-threadedge.c, tree-ssa-threadupdate.c, > tree-ssa-uncprop.c, tree-ssa-uninit.c, > tree-switch-conversion.c, tree-tailcall.c, > tree-vect-data-refs.c, tree-vect-loop.c, > tree-vect-loop-manip.c, tree-vectorizer.c, > tree-vect-patterns.c, tree-vect-slp.c, tree-vect-stmts.c, > tree-vrp.c, value-prof.c, var-tracking.c, web.c: Include tree-pass.h > only if needed. If tree-pass.h is included, do not include timevar.h > and dumpfile.h. If tree-pass.h is not included but dump_file, or > dump_flags, or the TDF_* flags are used, include dumpfile.h. > If gimple-pretty-print.h is included, don't include > tree-pretty-print.h. > Remove assorted unnecessary includes. > * Makefile.in: Fix dependencies. > > * config/mn10300/mn10300.c, config/c6x/c6x.c, config/ia64/ia64.c, > config/arm/arm.c, config/bfin/bfin.c, config/frv/frv.c, > config/spu/spu.c, config/mep/mep.c, config/i386/i386.c: > Include dumpfile.h. > * config/rl78/rl78.c: Include dumpfile.h instead of tree-pass.h. > > c-family/ > * c-gimplify.c: Include dumpfile.h instead of tree-dump.h. > * c-ada-spec.c: Likewise. > * c-dump.c (dump_stmt): Move to cp/dump.c, the only user. > * Make-lang.in: Fix dependencies. > > c/ > * c-decl.c: Include dumpfile.h instead of tree-dump.h. > * Make-lang.in: Fix dependencies. > > cp/ > * dump.c (dump_stmt): Moved here from c-dump.c. > * optimize.c: Include dumpfile.h instead of tree-dump.h. > * class.c: Likewise. > * decl2.c: Likewise. > * Make-lang.in: Fix dependencies. > > fortran/ > * f95-lang.c: Include dumpfile.h instead of tree-dump.h. > * Make-lang.in: Fix dependencies. > > java/ > * java-gimplify.c Include dumpfile.h instead of tree-dump.h > * Make-lang.in: Fix dependencies. > > lto/ > * lto.c: Do not include timevar.h.