This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] Introduce dumpfile.h, clean up tree-pass.h dependencies


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?

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.

Attachment: dumpfile_h.diff
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]