Sources

Since our project is integrated to the GCC source tree, we provide short overview of locations of our changes. We have implemented from scratch following modules:

cfgcleanup.c, cfgloop.c, cfgloopanal.c, tracer.c, web.c, coalesce.c, loop-new.c unroll-new.c, unroll-new.c var-tracking.c, bb-reorder.c13.6, midrtl.c, et-forest.c, et-forest.h, predict.def and analyze_branches script.

We made major changes to following modules:

flow.c
We split out the CFG handling code into cfg.c, cfganal.c, cfgrtl.c, cfgloop.c and importantly changed (de facto reimplemented) all the contents. We also added support for easy dynamic updating of liveness information.
emit-rtl.c
We modified all routines to update the flow graph.
toplev.c
We reorganized the rest_of_compilation function.
cfglayout.c
We rewrote the code to handle syntactic scope nest tree and changed all interfaces. We added functionality for code duplication and reorganized the way how the insn chain is put together.
gcse.c
GCSE now maintains liveness information and uses our code hoisting infrastructure code to avoid limitations of previous implementation.
df.c
Since we are the first users of Michael Hayes' data flow module, we had to fix bugs and some design defects. We also cleaned up the code.
gen*.c
All these functions had to be updated to handle midRTL.
recog.c
The most of mid level RTL code is present here.
optabs.c
We had to modify all RTL generation routines to produce mid level RTL code.
ifcvt.c
contains double test optimization pass.
predict.c
contains new branch predictor implementation.
We basically rewrote this module from scratch.
profile.c, final.c, libgcc.c
contain updated profiler implementation and changed interfaces.
reg-stack.c,reg-class.c,local.c,global.c
Updated to use the profile.
stmt.c
contains high level branch predictors.

Because of the nature of project, we had to touch almost all other back-end modules in GCC as well.

Jan Hubicka 2003-05-04