> During the expansion itself we have a mix of basic-blocks that are in RTL > and GIMPLE form. After expansion the CFG only contains RTL. The > sentence as-is is at least misleading, suggesting that after expansion > we have both RTL and GIMPLE in the CFG. > > So, on a second thought a more appropriate patch would be to just > remove the whole note: > > Note that at present, the representation of control flow in the > -@code{tree} representation is discarded before expanding to RTL@. > -Long term the CFG should be maintained and ``expanded'' to the > -RTL representation along with the function @code{tree} itself. > > that's an implementation detail that is no longer true but saying it is > no longer true doesn't contain any useful information.
Thanks for the explaination. :) I note that current svn head already removed the whole paragraph above (so please ignore my patch), and add a new paragraph at the beginning. --- In GCC, the representation of control flow is maintained throughout the compilation process, from constructing the CFG early in @code{pass_build_cfg} to @code{pass_free_cfg} (see @file{passes.c}). The CFG takes various different modes and may undergo extensive manipulations, but the graph is always valid between its construction and its release. This way, transfer of information such as data flow, a measured profile, or the loop tree, can be propagated through the passes pipeline, and even from @code{GIMPLE} to @code{RTL}. --- I think this is much clear than before. The word "modes" in "CFG takes various different modes" means different forms, GIMPLE or RTL, right? Regards, chenwj -- Wei-Ren Chen (陳韋任) Computer Systems Lab, Institute of Information Science, Academia Sinica, Taiwan (R.O.C.) Tel:886-2-2788-3799 #1667 Homepage: http://people.cs.nctu.edu.tw/~chenwj