Dear gcc developers, I found that it is essentially it is cc1plus does the compilation work for preprocessed cpp files. /usr/local/libexec/gcc/i686-pc-linux-gnu/4.1.1/cc1plus test.i.cc. At the end, cc1plush will print out some statistical info as the end of this email shows. Beside the source code, Is there any documentation around that describe these stages? The gcc internals does not talk much about this. Many thanks, - Andy callgraph construction: 0.00 ( 0%) usr 0.01 ( 3%) sys 0.00 ( 0%) wall 25 kB ( 0%) ggc cfg cleanup : 0.01 ( 2%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 0 kB ( 0%) ggc preprocessing : 0.05 (11%) usr 0.06 (16%) sys 0.10 ( 6%) wall 123 kB ( 1%) ggc parser : 0.20 (43%) usr 0.10 (27%) sys 0.91 (51%) wall 6552 kB (73%) ggc name lookup : 0.10 (22%) usr 0.20 (54%) sys 0.40 (22%) wall 589 kB ( 7%) ggc tree gimplify : 0.01 ( 2%) usr 0.00 ( 0%) sys 0.02 ( 1%) wall 124 kB ( 1%) ggc tree CFG construction : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 1%) wall 81 kB ( 1%) ggc tree CFG cleanup : 0.01 ( 2%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 0 kB ( 0%) ggc expand : 0.01 ( 2%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 401 kB ( 4%) ggc varconst : 0.02 ( 4%) usr 0.00 ( 0%) sys 0.28 (16%) wall 11 kB ( 0%) ggc jump : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 1%) wall 1 kB ( 0%) ggc local alloc : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 1%) wall 19 kB ( 0%) ggc global alloc : 0.01 ( 2%) usr 0.00 ( 0%) sys 0.02 ( 1%) wall 64 kB ( 1%) ggc flow 2 : 0.01 ( 2%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 38 kB ( 0%) ggc final : 0.02 ( 4%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 33 kB ( 0%) ggc TOTAL : 0.46 0.37 1.80 8996 kB