Classes | |
| class | alloc_int_finder |
| Splits liveranges to a set of intervals with nonempty intersection of sets of allowed register. More... | |
| class | alloc_interval |
| Group of pseudoinstructions that use the same register operand and it has nonempty intersection of sets of allowed registers for the operand. More... | |
| class | bb_finder |
| Identifies basic block in a function body. More... | |
| class | basic_block |
| Represents a basic block. More... | |
| class | body_preprocessor |
| Preprocesses function body before it is passed to backend's workers. More... | |
| class | dead_code_eliminator |
| Eliminates dead code. More... | |
| class | ge_generator |
| Generates ge-level intercode structures for a pi-level intecode body. More... | |
| class | linscan_regalloc |
| Provides a linearscan register allocation. More... | |
| class | literal_inliner |
| Provides immediate inlining. More... | |
| class | liveness_analysis |
| Performs liveness analysis of instruction operands. More... | |
| class | liveness_range |
| Represents liverange of an operand. More... | |
| class | memory_inliner |
| Performs inlining of memory operands. More... | |
| class | order_governor |
| Linearizes pseudopinstructions within function's body. More... | |
| class | pi_cond_jmp_rewriter |
| Performs conditional jump rewriting. More... | |
| class | scheduler |
| Performs list scheduling on a function's body based on critical path method. More... | |
| class | schedule_item |
| Represents item of a schedule. More... | |
| class | simple_spillgen |
| Performs second pass spill-code generation. More... | |
| class | spillgen |
| Performs spillgen generation. More... | |
| class | spillgen_group |
| Represents a group of operands of a pseudoinstruction that occupy the same register. More... | |
| class | useless_code_eliminator |
| Removes useless code from a function body. More... | |
| class | worker_base |
| Base class for backend workers. More... | |
Typedefs | |
| typedef set< ulint > | id_set__type |
| typedef vector< srp< ge_pi > > | ge_pi_vector__type |
| typedef vector< srp< liveness_range > > | liveness_rng_vector__type |
| typedef vector< srp< alloc_interval > > | alloc_int_vector__type |
| typedef set< srp< ge_pi > > | ge_pi_set__type |
| typedef map< srp< pi_mem_factory >, srp< set< srp< ge_pi > > > > | m2ge_pi_set__type |
| typedef list< srp< ge_pi > > | ge_pi_list__type |
| typedef vector< srp< ge_pi > > | ge_pi_vector__type |
| typedef vector< srp< ge_operand > > | ge_operand_vector__type |
| typedef vector< srp< basic_block > > | bb_vector__type |
| typedef list< srp< ge_pi > > | ge_pi_list__type |
| typedef list< srp< ge_pi > > | ge_pi_list__type |
| typedef vector< srp< ge_operand > > | ge_op_vector__type |
| typedef set< srp< ge_operand > > | ge_op_set__type |
| typedef set< ulint > | id_set__type |
| typedef list< srp< pi_pi > > | pi_pi_list__type |
| typedef list< srp< pi_sp > > | pi_sp_list__type |
| typedef list< srp< ge_pi > > | ge_pi_list__type |
| typedef vector< srp< ge_pi > > | ge_pi_vector__type |
| typedef vector< srp< pi_operand > > | pi_operand_vector__type |
| typedef map< srp< pi_pi >, srp< vector< srp< ge_pi > > > > | pi_pi2ge_pi_vector__type |
| typedef map< srp< pi_operand >, ulint > | pi_op2count__type |
| typedef set< ulint > | id_set__type |
| typedef vector< ulint > | id_vector__type |
| typedef vector< srp< ge_pi > > | ge_pi_vector__type |
| typedef vector< srp< liveness_range > > | liveness_rng_vector__type |
| typedef vector< srp< alloc_interval > > | alloc_int_vector__type |
| typedef map< ulint, srp< alloc_interval > > | reg2alloc_int__type |
| typedef map< srp< ge_operand_reg >, srp< tm_register > > | ge_op_reg2tm_reg__type |
| typedef list< srp< ge_pi > > | ge_pi_list__type |
| typedef vector< srp< ge_operand > > | ge_op_vector__type |
| typedef map< srp< ge_operand_reg >, srp< ge_operand_imm > > | reg2imm__type |
| typedef set< ulint > | id_set__type |
| typedef map< srp< ::lestes::backend_v2::intercode::ge_pi >, srp< ::lestes::std::pair< srp< set< srp< ::lestes::backend_v2::intercode::ge_operand_reg > > >, srp< set< srp< ::lestes::backend_v2::intercode::ge_operand_reg > > > > > > | ge_pi2inout__type |
| typedef list< srp< ge_pi > > | ge_pi_list__type |
| typedef set< srp< ::lestes::backend_v2::intercode::ge_operand_reg > > | ge_op_set__type |
| typedef ::lestes::std::pair< srp< ge_op_set__type >, srp< ge_op_set__type > > | ge_op_set_pair__type |
| typedef vector< srp< ge_operand > > | ge_op_vector__type |
| typedef vector< srp< ge_sp > > | ge_sp_vector__type |
| typedef map< srp< ge_operand >, srp< liveness_range > > | ge_op2liveness__type |
| typedef list< srp< ge_pi > > | ge_pi_list__type |
| typedef vector< srp< ge_operand > > | ge_op_vector__type |
| typedef map< srp< ge_operand_reg >, srp< ge_operand_mem > > | reg2mem__type |
| typedef set< ulint > | id_set__type |
| typedef list< srp< pi_pi > > | pi_list_type |
| typedef list< srp< pi_sp > > | sp_list_type |
| typedef vector< srp< pi_operand > > | operand_vector_type |
| typedef map< srp< pi_pi >, bool > | pi_bool_map_type |
| typedef list< srp< pi_pi > > | pi_list__type |
| typedef set< srp< ge_pi > > | ge_pi_set__type |
| typedef vector< srp< ge_pi > > | ge_pi_vector__type |
| typedef list< srp< ge_pi > > | ge_pi_list__type |
| typedef vector< srp< basic_block > > | bb_vector__type |
| typedef map< srp< ge_pi >, srp< schedule_item > > | ge2si__type |
| typedef set< srp< schedule_item > > | si_set__type |
| typedef vector< srp< schedule_item > > | si_vector__type |
| typedef set< srp< ge_pi > > | ge_pi_set__type |
| typedef set< ulint > | ulint_set__type |
| typedef list< srp< ge_pi > > | ge_pi_list__type |
| typedef vector< srp< ge_pi > > | ge_pi_vector__type |
| typedef vector< srp< ge_operand > > | ge_operand_vector__type |
| typedef list< srp< pi_mem_factory > > | mf_list__type |
| typedef map< srp< ge_operand_reg >, srp< pi_mem_factory > > | op2mf__type |
| typedef map< ulint, lstring > | id2lstring__type |
| typedef set< srp< pi_mem_factory > > | mf_set__type |
| typedef set< ulint > | id_set__type |
| typedef vector< ulint > | id_vector__type |
| typedef list< srp< ge_pi > > | ge_pi_list__type |
| typedef vector< srp< liveness_range > > | liveness_rng_vector__type |
| typedef vector< srp< alloc_interval > > | alloc_int_vector__type |
| typedef vector< srp< ge_operand > > | ge_operand_vector__type |
| typedef vector< srp< ge_pi > > | ge_pi_vector__type |
| typedef set< srp< ge_pi > > | ge_pi_set__type |
| typedef set< srp< ge_operand_reg > > | ge_op_reg_set__type |
| typedef map< srp< pi_mem_factory >, srp< ge_pi > > | mf2ge_pi__type |
| typedef map< ulint, srp< alloc_interval > > | reg2alloc_int__type |
| typedef map< ulint, srp< ge_pi > > | reg2ge_pi__type |
| typedef map< ulint, lstring > | id2lstring__type |
| typedef map< srp< ge_pi >, ulint > | ge2reg_map__type |
| typedef list< srp< spillgen_group > > | spillgen_group_list__type |
| typedef set< srp< spillgen_group > > | spillgen_group_set__type |
| typedef set< srp< alloc_interval > > | alloc_int_set__type |
| typedef list< srp< ge_pi > > | ge_pi_list__type |
| typedef vector< srp< ge_operand > > | ge_operand_vector__type |
| typedef map< ulint, srp< pi_mem_factory > > | id2mf__type |
| typedef set< ulint > | id_set__type |
Functions | |
| declare_logger (bblog) | |
| initialize_logger (bblog,"bb_finder", backend_v2_logger) | |
| declare_logger (log) | |
| initialize_logger (log,"ge_generator", backend_v2_logger) | |
| bool | alloc_int_cmp1 (srp< alloc_interval > a, srp< alloc_interval > b) |
| Compares two intervals. | |
| bool | alloc_int_cmp2 (srp< alloc_interval > a, srp< alloc_interval > b) |
| Compares two intervals. | |
| declare_logger (rlog) | |
| initialize_logger (rlog,"register_allocator", backend_v2_logger) | |
| declare_logger (og_log) | |
| initialize_logger (og_log,"order_governor", backend_v2_logger) | |
| declare_logger (schedlog) | |
| initialize_logger (schedlog,"scheduler", backend_v2_logger) | |
| bool | schedule_items_cmp1 (srp< schedule_item > a, srp< schedule_item > b) |
| Compares latest_start_time property of schedule_item instances. | |
| declare_logger (slog) | |
| initialize_logger (slog,"spillgen", backend_v2_logger) | |
| declare_logger (deplog) | |
| initialize_logger (deplog,"spillgen_deps", backend_v2_logger) | |
| typedef set<srp<alloc_interval> > lestes::backend_v2::workers::alloc_int_set__type |
Definition at line 43 of file spillgen.cc.
Definition at line 31 of file spillgen.cc.
Definition at line 26 of file linscan_regalloc.cc.
Definition at line 22 of file alloc_int_finder.cc.
| typedef vector< srp<basic_block> > lestes::backend_v2::workers::bb_vector__type |
Definition at line 24 of file scheduler.cc.
| typedef vector< srp<basic_block> > lestes::backend_v2::workers::bb_vector__type |
Definition at line 21 of file bb_finder.cc.
| typedef map<srp<ge_pi>, ulint> lestes::backend_v2::workers::ge2reg_map__type |
Definition at line 40 of file spillgen.cc.
| typedef map< srp<ge_pi>, srp<schedule_item> > lestes::backend_v2::workers::ge2si__type |
Definition at line 25 of file scheduler.cc.
| typedef map<srp<ge_operand>,srp<liveness_range> > lestes::backend_v2::workers::ge_op2liveness__type |
Definition at line 20 of file liveness_analysis.cc.
| typedef map<srp<ge_operand_reg>, srp<tm_register> > lestes::backend_v2::workers::ge_op_reg2tm_reg__type |
Definition at line 28 of file linscan_regalloc.cc.
| typedef set<srp<ge_operand_reg> > lestes::backend_v2::workers::ge_op_reg_set__type |
Definition at line 35 of file spillgen.cc.
| typedef set< srp< ::lestes::backend_v2::intercode::ge_operand_reg > > lestes::backend_v2::workers::ge_op_set__type |
Definition at line 16 of file liveness_analysis.cc.
| typedef set< srp<ge_operand> > lestes::backend_v2::workers::ge_op_set__type |
Definition at line 26 of file dead_code_eliminator.cc.
| typedef ::lestes::std::pair< srp<ge_op_set__type>,srp<ge_op_set__type> > lestes::backend_v2::workers::ge_op_set_pair__type |
Definition at line 17 of file liveness_analysis.cc.
| typedef vector< srp<ge_operand> > lestes::backend_v2::workers::ge_op_vector__type |
Definition at line 20 of file memory_inliner.cc.
| typedef vector< srp<ge_operand> > lestes::backend_v2::workers::ge_op_vector__type |
Definition at line 18 of file liveness_analysis.cc.
| typedef vector< srp<ge_operand> > lestes::backend_v2::workers::ge_op_vector__type |
Definition at line 20 of file literal_inliner.cc.
| typedef vector< srp<ge_operand> > lestes::backend_v2::workers::ge_op_vector__type |
Definition at line 25 of file dead_code_eliminator.cc.
| typedef vector<srp<ge_operand> > lestes::backend_v2::workers::ge_operand_vector__type |
Definition at line 22 of file useless_code_eliminator.cc.
| typedef vector<srp<ge_operand> > lestes::backend_v2::workers::ge_operand_vector__type |
Definition at line 32 of file spillgen.cc.
| typedef vector< srp<ge_operand> > lestes::backend_v2::workers::ge_operand_vector__type |
Definition at line 31 of file simple_spillgen.cc.
| typedef vector< srp<ge_operand> > lestes::backend_v2::workers::ge_operand_vector__type |
Definition at line 20 of file bb_finder.cc.
| typedef map< srp< ::lestes::backend_v2::intercode::ge_pi >, srp< ::lestes::std::pair< srp<set< srp< ::lestes::backend_v2::intercode::ge_operand_reg > > >, srp<set< srp< ::lestes::backend_v2::intercode::ge_operand_reg > > > > > > lestes::backend_v2::workers::ge_pi2inout__type |
Definition at line 14 of file liveness_analysis.cc.
| typedef list<srp<ge_pi> > lestes::backend_v2::workers::ge_pi_list__type |
Definition at line 21 of file useless_code_eliminator.cc.
| typedef list<srp<ge_pi> > lestes::backend_v2::workers::ge_pi_list__type |
Definition at line 29 of file spillgen.cc.
| typedef list< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_list__type |
Definition at line 29 of file simple_spillgen.cc.
| typedef list< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_list__type |
Definition at line 23 of file scheduler.cc.
| typedef list< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_list__type |
Definition at line 19 of file memory_inliner.cc.
| typedef list< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_list__type |
Definition at line 15 of file liveness_analysis.cc.
| typedef list< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_list__type |
Definition at line 19 of file literal_inliner.cc.
| typedef list< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_list__type |
Definition at line 21 of file ge_generator.cc.
| typedef list< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_list__type |
Definition at line 24 of file dead_code_eliminator.cc.
| typedef list<srp<ge_pi> > lestes::backend_v2::workers::ge_pi_list__type |
Definition at line 16 of file body_preprocessor.cc.
| typedef list< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_list__type |
Definition at line 18 of file bb_finder.cc.
| typedef set<srp<ge_pi> > lestes::backend_v2::workers::ge_pi_set__type |
Definition at line 34 of file spillgen.cc.
| typedef set< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_set__type |
Definition at line 27 of file simple_spillgen.cc.
| typedef set< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_set__type |
Definition at line 21 of file scheduler.cc.
| typedef set< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_set__type |
Definition at line 16 of file bb_finder.cc.
| typedef vector<srp<ge_pi> > lestes::backend_v2::workers::ge_pi_vector__type |
Definition at line 33 of file spillgen.cc.
| typedef vector< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_vector__type |
Definition at line 30 of file simple_spillgen.cc.
| typedef vector< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_vector__type |
Definition at line 22 of file scheduler.cc.
| typedef vector<srp<ge_pi> > lestes::backend_v2::workers::ge_pi_vector__type |
Definition at line 24 of file linscan_regalloc.cc.
| typedef vector< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_vector__type |
Definition at line 22 of file ge_generator.cc.
| typedef vector< srp<ge_pi> > lestes::backend_v2::workers::ge_pi_vector__type |
Definition at line 19 of file bb_finder.cc.
| typedef vector<srp<ge_pi> > lestes::backend_v2::workers::ge_pi_vector__type |
Definition at line 20 of file alloc_int_finder.cc.
| typedef vector< srp < ge_sp > > lestes::backend_v2::workers::ge_sp_vector__type |
Definition at line 19 of file liveness_analysis.cc.
| typedef map<ulint, lstring > lestes::backend_v2::workers::id2lstring__type |
Definition at line 39 of file spillgen.cc.
| typedef map<ulint,lstring> lestes::backend_v2::workers::id2lstring__type |
Definition at line 34 of file simple_spillgen.cc.
| typedef map<ulint, srp<pi_mem_factory> > lestes::backend_v2::workers::id2mf__type |
Definition at line 23 of file useless_code_eliminator.cc.
| typedef set<ulint> lestes::backend_v2::workers::id_set__type |
Definition at line 24 of file useless_code_eliminator.cc.
| typedef set<ulint> lestes::backend_v2::workers::id_set__type |
Definition at line 27 of file spillgen.cc.
| typedef set<ulint> lestes::backend_v2::workers::id_set__type |
Definition at line 22 of file memory_inliner.cc.
| typedef set<ulint> lestes::backend_v2::workers::id_set__type |
Definition at line 22 of file literal_inliner.cc.
| typedef set<ulint> lestes::backend_v2::workers::id_set__type |
Definition at line 22 of file linscan_regalloc.cc.
| typedef set<ulint> lestes::backend_v2::workers::id_set__type |
Definition at line 27 of file dead_code_eliminator.cc.
| typedef set<ulint> lestes::backend_v2::workers::id_set__type |
Definition at line 19 of file alloc_int_finder.cc.
| typedef vector<ulint> lestes::backend_v2::workers::id_vector__type |
Definition at line 28 of file spillgen.cc.
| typedef vector<ulint> lestes::backend_v2::workers::id_vector__type |
Definition at line 23 of file linscan_regalloc.cc.
Definition at line 30 of file spillgen.cc.
Definition at line 25 of file linscan_regalloc.cc.
Definition at line 21 of file alloc_int_finder.cc.
| typedef map<srp<pi_mem_factory>,srp<set< srp<ge_pi> > > > lestes::backend_v2::workers::m2ge_pi_set__type |
Definition at line 17 of file bb_finder.cc.
| typedef map<srp<pi_mem_factory>, srp<ge_pi> > lestes::backend_v2::workers::mf2ge_pi__type |
Definition at line 36 of file spillgen.cc.
| typedef list<srp<pi_mem_factory> > lestes::backend_v2::workers::mf_list__type |
Definition at line 32 of file simple_spillgen.cc.
| typedef set<srp<pi_mem_factory> > lestes::backend_v2::workers::mf_set__type |
Definition at line 26 of file spillgen.cc.
| typedef map<srp<ge_operand_reg>,srp<pi_mem_factory> > lestes::backend_v2::workers::op2mf__type |
Definition at line 33 of file simple_spillgen.cc.
| typedef vector< srp< pi_operand > > lestes::backend_v2::workers::operand_vector_type |
Definition at line 19 of file order_governor.cc.
| typedef map< srp<pi_pi>, bool > lestes::backend_v2::workers::pi_bool_map_type |
Definition at line 20 of file order_governor.cc.
| typedef list<srp<pi_pi> > lestes::backend_v2::workers::pi_list__type |
Definition at line 15 of file pi_cond_jmp_rewriter.cc.
| typedef list< srp< pi_pi > > lestes::backend_v2::workers::pi_list_type |
Definition at line 17 of file order_governor.cc.
| typedef map< srp<pi_operand>, ulint > lestes::backend_v2::workers::pi_op2count__type |
Definition at line 25 of file ge_generator.cc.
| typedef vector< srp<pi_operand> > lestes::backend_v2::workers::pi_operand_vector__type |
Definition at line 23 of file ge_generator.cc.
| typedef map< srp<pi_pi>, srp<vector<srp<ge_pi> > > > lestes::backend_v2::workers::pi_pi2ge_pi_vector__type |
Definition at line 24 of file ge_generator.cc.
| typedef list< srp<pi_pi> > lestes::backend_v2::workers::pi_pi_list__type |
Definition at line 19 of file ge_generator.cc.
| typedef list< srp<pi_sp> > lestes::backend_v2::workers::pi_sp_list__type |
Definition at line 20 of file ge_generator.cc.
| typedef map<ulint, srp<alloc_interval> > lestes::backend_v2::workers::reg2alloc_int__type |
Definition at line 37 of file spillgen.cc.
| typedef map<ulint, srp<alloc_interval> > lestes::backend_v2::workers::reg2alloc_int__type |
Definition at line 27 of file linscan_regalloc.cc.
| typedef map<ulint, srp<ge_pi> > lestes::backend_v2::workers::reg2ge_pi__type |
Definition at line 38 of file spillgen.cc.
| typedef map< srp<ge_operand_reg>, srp<ge_operand_imm> > lestes::backend_v2::workers::reg2imm__type |
Definition at line 21 of file literal_inliner.cc.
| typedef map< srp<ge_operand_reg>, srp<ge_operand_mem> > lestes::backend_v2::workers::reg2mem__type |
Definition at line 21 of file memory_inliner.cc.
| typedef set< srp<schedule_item> > lestes::backend_v2::workers::si_set__type |
Definition at line 26 of file scheduler.cc.
| typedef vector< srp<schedule_item> > lestes::backend_v2::workers::si_vector__type |
Definition at line 27 of file scheduler.cc.
| typedef list< srp< pi_sp > > lestes::backend_v2::workers::sp_list_type |
Definition at line 18 of file order_governor.cc.
Definition at line 41 of file spillgen.cc.
Definition at line 42 of file spillgen.cc.
| typedef set<ulint> lestes::backend_v2::workers::ulint_set__type |
Definition at line 28 of file simple_spillgen.cc.
| bool lestes::backend_v2::workers::alloc_int_cmp1 | ( | srp< alloc_interval > | a, | |
| srp< alloc_interval > | b | |||
| ) |
Compares two intervals.
| a | An interval. | |
| b | An interval. |
Definition at line 15 of file helpers.cc.
Referenced by lestes::backend_v2::workers::spillgen::process(), and lestes::backend_v2::workers::linscan_regalloc::process().
00015 { 00016 return a->start_get() < b->start_get(); 00017 }
| bool lestes::backend_v2::workers::alloc_int_cmp2 | ( | srp< alloc_interval > | a, | |
| srp< alloc_interval > | b | |||
| ) |
Compares two intervals.
| a | An interval. | |
| b | An interval. |
Definition at line 27 of file helpers.cc.
00027 { 00028 return a->end_get() > b->end_get(); 00029 }
| lestes::backend_v2::workers::declare_logger | ( | deplog | ) |
| lestes::backend_v2::workers::declare_logger | ( | slog | ) |
| lestes::backend_v2::workers::declare_logger | ( | schedlog | ) |
| lestes::backend_v2::workers::declare_logger | ( | og_log | ) |
| lestes::backend_v2::workers::declare_logger | ( | rlog | ) |
| lestes::backend_v2::workers::declare_logger | ( | log | ) |
| lestes::backend_v2::workers::declare_logger | ( | bblog | ) |
| lestes::backend_v2::workers::initialize_logger | ( | deplog | , | |
| "spillgen_deps" | , | |||
| backend_v2_logger | ||||
| ) |
| lestes::backend_v2::workers::initialize_logger | ( | slog | , | |
| "spillgen" | , | |||
| backend_v2_logger | ||||
| ) |
| lestes::backend_v2::workers::initialize_logger | ( | schedlog | , | |
| "scheduler" | , | |||
| backend_v2_logger | ||||
| ) |
| lestes::backend_v2::workers::initialize_logger | ( | og_log | , | |
| "order_governor" | , | |||
| backend_v2_logger | ||||
| ) |
| lestes::backend_v2::workers::initialize_logger | ( | rlog | , | |
| "register_allocator" | , | |||
| backend_v2_logger | ||||
| ) |
| lestes::backend_v2::workers::initialize_logger | ( | log | , | |
| "ge_generator" | , | |||
| backend_v2_logger | ||||
| ) |
| lestes::backend_v2::workers::initialize_logger | ( | bblog | , | |
| "bb_finder" | , | |||
| backend_v2_logger | ||||
| ) |
| bool lestes::backend_v2::workers::schedule_items_cmp1 | ( | srp< schedule_item > | a, | |
| srp< schedule_item > | b | |||
| ) |
Compares latest_start_time property of schedule_item instances.
Definition at line 88 of file scheduler.cc.
00088 { 00089 return a->latest_start_time_get() < b->latest_start_time_get(); 00090 }
1.5.1-20070107