Source Code Map
cc1 is the binary that actually does the C compilation. This page offers a map through the code from main() to the optimizers. This information is based on the
gcc-4.0-20050213 snapshot.
Call Graph
Functions are grouped by file and indented under their callers.
gcc/main.c
Functions
main()
toplev_main() (gcc/toplev.c)
gcc/toplev.c
Functions
toplev_main()
general_init()
do_compile()
general_init()
init_tree_optimization_passes() (gcc/tree-optimize.c)
do_compile()
compile_file()
compile_file()
yyparse() (gcc/c-parse.in)
gcc/c-parse.in
Functions
yyparse()
The fndef: rule calls finish_function() after parsing the function's compound statement.
finish_function() (gcc/c-decl.c)
gcc/c-decl.c
Functions
finish_function()
c_expand_body()
c_expand_body()
tree_rest_of_compilation() (gcc/tree-optimize.c)
gcc/tree-optimize.c
Variables
all_passes
This global is a list of gcc/tree_opt_pass structs that define the order for the tree level optimizations.
Functions
init_tree_optimization_passes()
all_passes is initialized here.
tree_rest_of_compilation()
execute_pass_list()
execute_pass_list()
Tree level optimizations happen here. Passes are defined in init_tree_optimization_passes(). One of the passes executed here (pass_rest_of_compilation) runs the back end (RTL) of the compiler through the function rest_of_compilation().
execute_one_pass()
gcc/tree-pass.h
Types
tree_opt_pass
A struct that defines a single optimizer pass.
gcc/passes.c
Variables
pass_rest_of_compilation
This variable defines the pass that executes the RTL level of the compiler.
Functions
rest_of_compilation()
RTL optimizations start here.
rest_of_handle_tracer()
rest_of_handle_sms()
rest_of_handle_sched2()
rest_of_handle_tracer()
Tail duplication starts here.
tracer() (gcc/tracer.c)
rest_of_handle_sms()
Swing Modulo Scheduling starts here.
sms_schedule() (gcc/modulo-sched.c)
rest_of_handle_sched2()
Superblock scheduling starts here
This function is not used on ia64. See rest_of_handle_machine_reorg()
schedule_ebbs() (gcc/sched-ebb.c)
rest_of_handle_machine_reorg()
Superblock scheduling starts here for ia64.
ia64_reorg() (gcc/config/ia64/ia64.c)
gcc/modulo-sched.c
Functions
sms_schedule()
This function handles Swing Modulo Scheduling.
gcc/config/ia64/ia64.c
Functions
ia64_reorg()
Handles ia64 specific optimizations. This function is used instead of rest_of_handle_sched2() on ia64.
schedule_ebbs() (gcc/sched-ebb.c)
