#include "import.h"#include "defs.h"#include "errors.h"#include "cgir.h"#include "cg.h"#include "bb.h"#include "bb_list.h"#include "cgexp.h"#include "cg_flags.h"#include "cg_spill.h"#include "cg_region.h"#include "whirl2ops.h"#include "opt_alias_interface.h"#include "gra_bb.h"#include "gra_lrange.h"#include "lrange_list.h"#include "gra_loop.h"#include "gra_region.h"#include "gra_trace.h"

Go to the source code of this file.
Definition at line 2017 of file gra_spill.cxx.
References GRA_BB::Add_Live_Out_LRANGE(), GRA_BB_FLOW_NEIGHBOR_ITER::Current(), GRA_BB_FLOW_NEIGHBOR_ITER::Done(), iter, GRA_BB_FLOW_NEIGHBOR_ITER::Preds_Init(), and GRA_BB_FLOW_NEIGHBOR_ITER::Step().
Referenced by Move_Spill_Out_Of_LRANGE().
Definition at line 1286 of file gra_spill.cxx.
References BB_first_op, BB_Remove_Op(), BB_Unique_Successor(), CGSPILL_Append_Ops(), Complement_TN(), Dup_TN_Even_If_Dedicated(), Exp_COPY(), gbb_mgr, GBB_MGR::Get(), i, INT, NULL, OP_next, OP_opnd, OP_opnds, OP_result, OP_results, OPS_Append_Op(), OPS_EMPTY, GRA_BB::Region(), region, Region_TN(), Set_OP_opnd, tmp, TN_is_dedicated, TN_is_true_pred, and TN_is_zero().
Referenced by Divide_Glue_Code().
Definition at line 1225 of file gra_spill.cxx.
References BB_last_op, BB_Remove_Op(), BB_Unique_Predecessor(), CGSPILL_Prepend_Ops(), Complement_TN(), Defines_Mapped_TN(), Dup_TN_Even_If_Dedicated(), Exp_COPY(), gbb_mgr, GBB_MGR::Get(), i, INT, map, Map_Operands(), NULL, OP_prev, OP_result, OP_results, OPS_EMPTY, OPS_Prepend_Op(), GRA_BB::Region(), region, result, Set_OP_result, tmp, TN_is_dedicated, TN_is_zero(), TN_MAP_Create(), TN_MAP_Delete(), True_TN, and Uses_Region_TN().
Referenced by Divide_Glue_Code().
Definition at line 1130 of file gra_spill.cxx.
References LRANGE_MGR::Get(), lrange_mgr, LRANGE_TYPE_COMPLEMENT, NULL, and LRANGE::Type().
Referenced by BB_Split_Entry_Glue(), BB_Split_Exit_Glue(), and Map_Operands().
Definition at line 1208 of file gra_spill.cxx.
References BOOL, FALSE, i, INT, OP_result, OP_results, TN_MAP_Get(), and TRUE.
Referenced by BB_Split_Exit_Glue().
Definition at line 1342 of file gra_spill.cxx.
References BB_Split_Entry_Glue(), BB_Split_Exit_Glue(), and NULL.
Referenced by GRA_Spill().
Definition at line 2483 of file gra_spill.cxx.
References LRANGE_SPLIT_LIST_ITER::Current(), LRANGE_LUNIT_ITER::Current(), LRANGE_SPLIT_LIST_ITER::Done(), LRANGE_LUNIT_ITER::Done(), LUNIT::Gbb(), GRA_Trace_Place(), GRA_Trace_Place_LRANGE_GBB(), LRANGE_SPLIT_LIST_ITER::Init(), LRANGE_LUNIT_ITER::Init(), iter, Possibly_List_LUNIT(), LUNIT::Restore_Above(), LUNIT::Spill_Below(), LRANGE::Spilled(), split_lrange, LRANGE_LUNIT_ITER::Step(), LRANGE_SPLIT_LIST_ITER::Step(), LRANGE::Tn(), and TN_number.
Definition at line 2526 of file gra_spill.cxx.
References LUNIT_SPILL_LIST_ITER::Current(), LUNIT_SPILL_LIST_ITER::Done(), LUNIT::Gbb(), GRA_Trace_Split_LUNIT_Spill(), LUNIT_SPILL_LIST_ITER::Init(), iter, LUNIT::Live_In(), LUNIT::Live_Out(), LUNIT::Lrange(), LRANGE_Restore_Above(), LRANGE_Spill_Below(), LUNIT_Spill(), LUNIT::Restore_Above(), LUNIT::Spill_Below(), and LUNIT_SPILL_LIST_ITER::Step().
Referenced by GRA_Spill().
| void Gen_Spill_Restore | ( | TN * | tn, | |
| ST * | spill_loc, | |||
| GRA_BB * | gbb, | |||
| void(*)(TN *, ST *, OPS *, CGSPILL_CLIENT, BB *) | gen_fn, | |||
| void(*)(BB *, OPS *) | add_fn, | |||
| void(*)(TN *, BB *, OPS *) | insert_fn, | |||
| BOOL | insert_flag | |||
| ) | [inline] |
Definition at line 360 of file gra_spill.cxx.
References GRA_BB::Bb(), BB_id, CG_local_skip_after, CG_local_skip_before, CG_local_skip_equal, CGSPILL_GRA, GRA_ensure_spill_proximity, GRA_pu_num, Is_True, OPS_EMPTY, GRA_BB::Region_Is_Complement(), Reset_BB_scheduled, and TN_number.
Referenced by TN_Restore_Above(), TN_Restore_Below(), TN_Spill_Above(), and TN_Spill_Below().
Definition at line 2556 of file gra_spill.cxx.
References BB_next, LRANGE_MGR::Clear_One_Set(), FOR_ALL_ISA_REGISTER_CLASS(), gbb_mgr, GBB_MGR::Get(), lrange_mgr, LRANGE_Restore_Below(), LRANGE_Spill_Above(), NULL, LRANGE_MGR::One_Set_MemberP(), LRANGE_MGR::One_Set_Union1(), GRA_BB::Region(), REGION_First_BB, GRA_BB::Restore_Below(), GRA_BB::Spill_Above(), su, and GRA_REGION::Subuniverse().
Referenced by GRA_Spill().
Definition at line 2671 of file gra_spill.cxx.
References LUNIT::Lrange(), Possibly_List_LUNIT(), and LUNIT::Restore_Above_Set().
Referenced by Split_Load().
Definition at line 2682 of file gra_spill.cxx.
References Possibly_List_LUNIT(), and LUNIT::Spill_Below_Set().
Referenced by Split_Store().
Definition at line 2692 of file gra_spill.cxx.
References DevAssert, GRA_pool, GRA_Trace_Color_LRANGE(), LRANGE::Has_Wired_Register(), LRANGE_TYPE_COMPLEMENT, LRANGE_TYPE_LOCAL, spilled_lranges, LRANGE::Spilled_Set(), and LRANGE::Type().
Definition at line 2723 of file gra_spill.cxx.
References BB_first_op, BB_last_op, BB_Remove_Op(), BOOL, Entry_BB_Head, Exit_BB_Head, FALSE, LRANGE_MGR::Get(), Is_True, lrange_mgr, LRANGE::No_Appearance_Set(), NULL, OP_next, OP_prev, OP_restore_predicates(), OP_result, OP_save_predicates(), TN_is_global_reg, and TRUE.
Definition at line 2610 of file gra_spill.cxx.
References GRA_REGION_MGR::Complement_Region(), GRA_REGION_RC_NL_LRANGE_ITER::Current(), LUNIT_SPILL_LIST_ITER::Current(), Divide_Glue_Code(), GRA_REGION_RC_NL_LRANGE_ITER::Done(), LUNIT_SPILL_LIST_ITER::Done(), FOR_ALL_ISA_REGISTER_CLASS(), freq_restore_count, freq_spill_count, Gen_Restores_Above_And_Spills_Below(), Gen_Spills_Above_And_Restores_Below(), GRA_Init_Trace_Memory(), gra_region_mgr, GRA_Trace_Memory(), GRA_Trace_Spill_Stats(), Identify_Initialize_Glue_Blocks(), GRA_REGION_RC_NL_LRANGE_ITER::Init(), LUNIT_SPILL_LIST_ITER::Init(), iter, LUNIT::Lrange(), LRANGE_Spill(), NULL, Optimize_Placement(), LRANGE::Original_TN(), Possibly_List_LRANGE(), priority_count, region, restore_count, Set_TN_spill, spill_count, LUNIT::Spill_Listed_Reset(), spilled_lranges, GRA_REGION_RC_NL_LRANGE_ITER::Step(), LUNIT_SPILL_LIST_ITER::Step(), LRANGE::Tn(), and TN_spill.
Referenced by GRA_Allocate_Global_Registers().
Definition at line 2709 of file gra_spill.cxx.
References NULL, and spilled_lranges.
Referenced by GRA_Allocate_Global_Registers().
| static BOOL Has_Predecessor_Not_In_LRANGE | ( | GRA_BB * | gbb, | |
| LRANGE * | lrange, | |||
| GRA_BB * | exclude_pred = NULL | |||
| ) | [static] |
Definition at line 1968 of file gra_spill.cxx.
References GRA_BB::Bb(), BB_call, BOOL, LRANGE::Contains_BB(), GRA_BB_FLOW_NEIGHBOR_ITER::Current(), GRA_BB_FLOW_NEIGHBOR_ITER::Done(), FALSE, GRA_BB::Is_Live_Out_LRANGE(), iter, NULL, GRA_BB_FLOW_NEIGHBOR_ITER::Preds_Init(), LRANGE::Rc(), LRANGE::Reg(), REGISTER_CLASS_callee_saves, REGISTER_SET_MemberP(), GRA_BB_FLOW_NEIGHBOR_ITER::Step(), and TRUE.
Referenced by Move_Spill_Out_Of_LRANGE().
| static BOOL Has_Successor_Not_In_LRANGE | ( | GRA_BB * | gbb, | |
| LRANGE * | lrange, | |||
| GRA_BB * | exclude_succ = NULL | |||
| ) | [static] |
Definition at line 1596 of file gra_spill.cxx.
References GRA_BB::Bb(), LRANGE::Contains_BB(), GRA_BB_FLOW_NEIGHBOR_ITER::Current(), GRA_BB_FLOW_NEIGHBOR_ITER::Done(), FALSE, GRA_BB::Is_Live_In_LRANGE(), iter, NULL, LRANGE::Rc(), GRA_BB_FLOW_NEIGHBOR_ITER::Step(), GRA_BB_FLOW_NEIGHBOR_ITER::Succs_Init(), and TRUE.
Referenced by Move_Restore_Out_Of_LRANGE().
Definition at line 1085 of file gra_spill.cxx.
References BB_next, BB_rid, BB_Unique_Predecessor(), BB_Unique_Successor(), gbb_mgr, GBB_MGR::Get(), GRA_pool, NULL, REGION_First_BB, GRA_BB::Region_Is_Complement(), and RID_parent.
Referenced by GRA_Spill().
Definition at line 1473 of file gra_spill.cxx.
References GRA_BB::Bb(), BB_live_use, LUNIT::Gbb(), LUNIT::Has_Def(), LUNIT::Lrange(), LRANGE::Original_TN(), LUNIT::Spill_Below(), and LUNIT::Split_Defreach_Out().
Referenced by Mark_Live_In().
Definition at line 582 of file gra_spill.cxx.
References CGSPILL_Get_TN_Spill_Location(), CGSPILL_GRA, LRANGE::Find_LUNIT_For_GBB(), NULL, LRANGE::Original_TN(), LRANGE::Rc(), LRANGE::Tn(), TN_Restore_Above(), TRUE, LUNIT::True_Reference(), and void.
Referenced by Gen_Restores_Above_And_Spills_Below().
Definition at line 529 of file gra_spill.cxx.
References CGSPILL_Get_TN_Spill_Location(), CGSPILL_GRA, LRANGE::Original_TN(), LRANGE::Tn(), and TN_Restore_Below().
Referenced by Gen_Spills_Above_And_Restores_Below().
Definition at line 996 of file gra_spill.cxx.
References Build_Dedicated_TN(), LRANGE_LUNIT_ITER::Current(), LRANGE_LUNIT_ITER::Done(), FALSE, Gen_Frame_Pointer, LRANGE_LUNIT_ITER::Init(), iter, LUNIT_Spill(), LRANGE::No_Appearance(), NULL, LRANGE::Original_TN(), STACK< T >::Push(), LRANGE_LUNIT_ITER::Step(), TN_Allocate_Register, TN_is_float, TN_is_save_reg, TN_register, TN_save_rclass, and TN_save_reg.
Referenced by GRA_Spill().
Definition at line 510 of file gra_spill.cxx.
References CGSPILL_Get_TN_Spill_Location(), CGSPILL_GRA, LRANGE::Original_TN(), LRANGE::Tn(), and TN_Spill_Above().
Referenced by Gen_Spills_Above_And_Restores_Below().
Definition at line 548 of file gra_spill.cxx.
References CGSPILL_Get_TN_Spill_Location(), CGSPILL_GRA, LRANGE::Find_LUNIT_For_GBB(), NULL, LRANGE::Original_TN(), LRANGE::Rc(), LRANGE::Tn(), TN_Spill_Below(), TRUE, LUNIT::True_Reference(), and void.
Referenced by Gen_Restores_Above_And_Spills_Below().
Definition at line 877 of file gra_spill.cxx.
References GRA_BB::Bb(), BB_entry, BB_exit, BB_handler, BB_nest_level, BOOL, Build_Dedicated_TN(), CGSPILL_Get_TN_Spill_Location(), CGSPILL_GRA, Dup_TN(), FALSE, LUNIT::Gbb(), LUNIT::Has_Def(), LUNIT::Has_Exposed_Use(), GRA_BB::Is_Live_In_LRANGE(), GRA_BB::Is_Live_Out_LRANGE(), LUNIT::Lrange(), LRANGE::Original_TN(), STACK< T >::Push(), GRA_BB::Remove_Live_In_LRANGE(), GRA_BB::Remove_Live_Out_LRANGE(), GRA_BB::Rename_TN_References(), LUNIT::Restore_Above(), return, Set_TN_spill, LUNIT::Spill_Below(), Spill_Homeable_TN(), Spill_Prolog_Epilog_Save_LUNIT(), LRANGE::Tn(), TN_is_float, TN_is_gra_homeable, TN_is_save_reg, TN_Restore_Above(), TN_save_rclass, TN_save_reg, TN_Spill_Below(), and TRUE.
Referenced by Gen_Restores_Above_And_Spills_Below(), and LRANGE_Spill().
Definition at line 768 of file gra_spill.cxx.
References Dup_TN_Even_If_Dedicated(), Set_TN_is_dedicated, Set_TN_register_and_class, Set_TN_save_creg, Set_TN_spill, TN_register_and_class, and TN_save_creg.
Referenced by Spill_Prolog_Epilog_Save_LUNIT().
Definition at line 1185 of file gra_spill.cxx.
References Complement_TN(), DevAssert, i, INT, OP_opnd, OP_opnds, TN_is_constant, TN_MAP_Set(), TN_number, and TRUE.
Referenced by BB_Split_Exit_Glue().
| static void Mark_Defreach_Out | ( | LRANGE * | lrange, | |
| SPILL_LIST * | store_list | |||
| ) | [static] |
Definition at line 1430 of file gra_spill.cxx.
References GBB_MGR::Clear_One_Set(), LRANGE_LUNIT_ITER::Current(), LUNIT::Def_From_Home(), LRANGE_LUNIT_ITER::Done(), LUNIT::Gbb(), gbb_mgr, LUNIT::Has_Def(), LRANGE_LUNIT_ITER::Init(), iter, Mark_Defreach_Out_Recur(), NULL, GBB_MGR::One_Set_MemberP(), sl, and LRANGE_LUNIT_ITER::Step().
Referenced by Optimize_Placement().
Definition at line 1384 of file gra_spill.cxx.
References LRANGE::Contains_BB(), GRA_BB_FLOW_NEIGHBOR_ITER::Current(), GRA_BB_FLOW_NEIGHBOR_ITER::Done(), LRANGE::Find_LUNIT_For_GBB(), gbb_mgr, iter, GBB_MGR::One_Set_MemberP(), GBB_MGR::One_Set_Union1(), GRA_BB::Spill_Above_Check(), GRA_BB_FLOW_NEIGHBOR_ITER::Step(), GRA_BB_FLOW_NEIGHBOR_ITER::Succs_Init(), LUNIT::Syncs_With_Home(), LRANGE::Tn(), and TN_is_gra_homeable.
Referenced by Mark_Defreach_Out().
| static void Mark_Live_In | ( | LRANGE * | lrange, | |
| SPILL_LIST * | load_list, | |||
| SPILL_LIST * | store_list | |||
| ) | [static] |
Definition at line 1546 of file gra_spill.cxx.
References GBB_MGR::Clear_One_Set(), LRANGE_LUNIT_ITER::Current(), LRANGE_LUNIT_ITER::Done(), LUNIT::Gbb(), SPILL_LIST::Gbb(), gbb_mgr, SPILL_LIST::Get_Gbb(), LRANGE_LUNIT_ITER::Init(), iter, Local_Live_In(), SPILL_LIST::Lunit(), Mark_Live_In_Recur(), SPILL_LIST::Next(), NULL, GBB_MGR::One_Set_MemberP(), sl, SPILL_LIST::Split_Live_In_Set(), LUNIT::Split_Live_In_Set(), and LRANGE_LUNIT_ITER::Step().
Referenced by Optimize_Placement().
Definition at line 1496 of file gra_spill.cxx.
References GRA_BB::Bb(), BB_live_def, BB_live_use, LRANGE::Contains_BB(), GRA_BB_FLOW_NEIGHBOR_ITER::Current(), GRA_BB_FLOW_NEIGHBOR_ITER::Done(), gbb_mgr, iter, GBB_MGR::One_Set_MemberP(), GBB_MGR::One_Set_Union1(), LRANGE::Original_TN(), GRA_BB_FLOW_NEIGHBOR_ITER::Preds_Init(), GRA_BB::Restore_Below_Check(), GRA_BB::Spill_Above_Check(), and GRA_BB_FLOW_NEIGHBOR_ITER::Step().
Referenced by Mark_Live_In().
| static BOOL Move_Restore_Out_Of_LRANGE | ( | LUNIT * | lunit, | |
| SPILL_LIST ** | spill_list | |||
| ) | [static] |
Definition at line 1760 of file gra_spill.cxx.
References GRA_BB::Add_Live_In_LRANGE(), GRA_BB::Add_Live_Out_LRANGE(), GRA_BB::Bb(), BB_call, BB_rid, BOOL, callee_saves, LRANGE::Contains_BB(), GRA_BB_FLOW_NEIGHBOR_ITER::Current(), GRA_BB_FLOW_NEIGHBOR_ITER::Done(), FALSE, LUNIT::Gbb(), GRA_optimize_placement, GRA_Trace_Place_LRANGE_GBB(), Has_Successor_Not_In_LRANGE(), INT, GRA_BB::Is_Live_Out_LRANGE(), iter, LUNIT::Lrange(), MEM_local_nz_pool, NULL, OPT_Space, GRA_BB_FLOW_NEIGHBOR_ITER::Preds_Init(), SPILL_LIST::Push(), LRANGE::Rc(), LRANGE::Reg(), REGISTER_CLASS_callee_saves, REGISTER_SET_MemberP(), LUNIT::Restore_Above_Reset(), GRA_BB::Restore_Below_Set(), sl, SPILL_LIST_Create_Gbb(), GRA_BB_FLOW_NEIGHBOR_ITER::Step(), and TRUE.
Referenced by Optimize_Placement().
Definition at line 1735 of file gra_spill.cxx.
References GRA_BB::Add_Live_In_LRANGE(), GRA_BB::Add_Live_Out_LRANGE(), GRA_BB::Bb(), BB_Unique_Predecessor(), BB_Unique_Successor(), DevAssert, LUNIT::Gbb(), gbb_mgr, GBB_MGR::Get(), GRA_Trace_Place_LRANGE_GBB(), Is_True, LUNIT::Lrange(), NULL, LUNIT::Restore_Above_Reset(), and GRA_BB::Restore_Below_Set().
| static BOOL Move_Spill_Code_Above_Region | ( | LUNIT * | lunit, | |
| BOOL | move_restore, | |||
| SPILL_LIST ** | spill_list | |||
| ) | [static] |
Definition at line 2181 of file gra_spill.cxx.
References GRA_BB::Add_Live_In_LRANGE(), GRA_BB::Add_Live_Out_LRANGE(), GRA_BB::Bb(), FALSE, LRANGE::Find_LUNIT_For_GBB(), LUNIT::Gbb(), GRA_Trace_Place_LRANGE_GBB(), SPILL_LIST::Load_Below_Sticks_Set(), LUNIT::Lrange(), LUNIT_Create(), MEM_local_nz_pool, NULL, Possibly_List_LUNIT(), SPILL_LIST::Push(), Region_Pre_Header(), LUNIT::Restore_Above_Reset(), GRA_BB::Restore_Below_Set(), LUNIT::Spill_Below_Reset(), LUNIT::Spill_Below_Set(), LUNIT::Spill_Below_Sticks_Set(), SPILL_LIST_Create_Gbb(), SPILL_LIST_Create_Lunit(), and TRUE.
Referenced by Optimize_Placement().
| static BOOL Move_Spill_Out_Of_LRANGE | ( | LUNIT * | lunit, | |
| SPILL_LIST ** | spill_list | |||
| ) | [static] |
Definition at line 2035 of file gra_spill.cxx.
References GRA_BB::Add_Live_In_LRANGE(), Add_To_Predecessor_Live_Out(), GRA_BB::Bb(), BB_rid, BOOL, GRA_BB_FLOW_NEIGHBOR_ITER::Current(), GRA_BB_FLOW_NEIGHBOR_ITER::Done(), FALSE, LUNIT::Gbb(), GRA_optimize_placement, GRA_Trace_Place_LRANGE_GBB(), Has_Predecessor_Not_In_LRANGE(), INT, iter, LUNIT::Lrange(), MEM_local_nz_pool, Needs_Spill(), NULL, OPT_Space, SPILL_LIST::Push(), LRANGE::Rc(), sl, GRA_BB::Spill_Above_Set(), LUNIT::Spill_Below_Reset(), LUNIT::Spill_Below_Sticks(), spill_count, SPILL_LIST_Create_Gbb(), GRA_BB_FLOW_NEIGHBOR_ITER::Step(), GRA_BB_FLOW_NEIGHBOR_ITER::Succs_Init(), and TRUE.
Referenced by Optimize_Placement().
Definition at line 1945 of file gra_spill.cxx.
References LRANGE::Contains_BB(), FALSE, LRANGE::Find_LUNIT_For_GBB(), LUNIT::Restore_Above(), and TRUE.
Referenced by Move_Spill_Out_Of_LRANGE().
| static BOOL No_Successor_Has_Restore | ( | SPILL_LIST * | sl, | |
| LRANGE * | lrange | |||
| ) | [static] |
Definition at line 1896 of file gra_spill.cxx.
References GRA_BB::Bb(), BB_live_use, LRANGE::Contains_BB(), GRA_BB_FLOW_NEIGHBOR_ITER::Current(), GRA_BB_FLOW_NEIGHBOR_ITER::Done(), FALSE, SPILL_LIST::Gbb(), gbb_mgr, SPILL_LIST::Get_Gbb(), iter, SPILL_LIST::Lunit(), GBB_MGR::One_Set_MemberP(), LRANGE::Original_TN(), GRA_BB::Restore_Below_Check(), LUNIT::Spill_Below_Sticks(), GRA_BB_FLOW_NEIGHBOR_ITER::Step(), GRA_BB_FLOW_NEIGHBOR_ITER::Succs_Init(), and TRUE.
Referenced by Optimize_Placement().
Definition at line 2273 of file gra_spill.cxx.
References BOOL, change, Check_Split_Borders(), GBB_MGR::Clear_One_Set(), LRANGE::Contains_BB(), LRANGE_SPLIT_LIST_ITER::Current(), LRANGE_LUNIT_ITER::Current(), LRANGE_SPLIT_LIST_ITER::Done(), LRANGE_LUNIT_ITER::Done(), FALSE, LUNIT::Gbb(), gbb_mgr, SPILL_LIST::Get_Gbb(), GRA_remove_spills, GRA_Trace_Check_Splits(), GRA_Trace_Place(), GRA_Trace_Place_LRANGE_GBB(), LRANGE_SPLIT_LIST_ITER::Init(), LRANGE_LUNIT_ITER::Init(), GRA_BB::Is_Region_Block(), Is_True, iter, SPILL_LIST::Load_Below_Sticks(), SPILL_LIST::Lunit(), Mark_Defreach_Out(), Mark_Live_In(), MEM_local_nz_pool, MEM_POOL_Pop, MEM_POOL_Push, Move_Restore_Out_Of_LRANGE(), Move_Spill_Code_Above_Region(), Move_Spill_Out_Of_LRANGE(), SPILL_LIST::Next(), No_Successor_Has_Restore(), NULL, GBB_MGR::One_Set_Union1(), Possibly_List_LUNIT(), SPILL_LIST::Push(), GRA_BB::Region_Is_Complement(), LUNIT::Restore_Above(), LUNIT::Restore_Above_Reset(), GRA_BB::Restore_Below_Reset(), sl, GRA_BB::Spill_Above_Reset(), LUNIT::Spill_Below(), LUNIT::Spill_Below_Reset(), SPILL_LIST_Create_Lunit(), LRANGE::Spilled(), SPILL_LIST::Split_Defreach_Out(), SPILL_LIST::Split_Live_In(), split_lrange, LRANGE_LUNIT_ITER::Step(), LRANGE_SPLIT_LIST_ITER::Step(), LRANGE::Tn(), TN_number, and TRUE.
Referenced by GRA_Spill().
Definition at line 201 of file gra_spill.cxx.
References LRANGE::Split_List_Push(), LRANGE::Split_Listed(), and LRANGE::Split_Listed_Set().
Referenced by GRA_Spill().
Definition at line 184 of file gra_spill.cxx.
References LUNIT::Spill_List_Push(), LUNIT::Spill_Listed(), and LUNIT::Spill_Listed_Set().
Referenced by Dumb_Placement(), GRA_Note_Restore_Above(), GRA_Note_Save_Below(), Move_Spill_Code_Above_Region(), and Optimize_Placement().
Definition at line 2137 of file gra_spill.cxx.
References GRA_BB::Bb(), BB_id, BB_prev, BB_rid, BB_Unique_Predecessor(), CGRIN_entry, DevAssert, gbb_mgr, GBB_MGR::Get(), NULL, GRA_BB::Region(), GRA_BB::Region_Is_Complement(), result, GRA_REGION::Rid(), RID_cginfo, RID_type, and RID_TYPE_swp.
Referenced by Move_Spill_Code_Above_Region().
| static BOOL Region_TN | ( | const TN * | tn, | |
| const GRA_REGION * | region | |||
| ) | [static] |
Definition at line 1144 of file gra_spill.cxx.
References DevAssert, FALSE, LRANGE_MGR::Get(), lrange_mgr, LRANGE_TYPE_REGION, NULL, LRANGE::Region(), TRUE, and LRANGE::Type().
| static void Spill_Homeable_TN | ( | GRA_BB * | gbb, | |
| TN * | orig_tn, | |||
| TN * | new_tn, | |||
| ST * | st, | |||
| LUNIT * | lunit, | |||
| LRANGE * | lrange | |||
| ) | [static] |
Definition at line 617 of file gra_spill.cxx.
References alias, Alias_Manager, Aliased(), GRA_BB::Bb(), BB_Remove_Op(), BOOL, GRA_BB_OP_FORWARD_ITER::Current(), GRA_BB_OP_FORWARD_ITER::Done(), FALSE, Get_WN_From_Memory_OP(), GRA_Trace_Home_Removal(), GRA_Trace_Homing(), i, GRA_BB_OP_FORWARD_ITER::Init(), INT, GRA_BB::Is_Live_In_LRANGE(), GRA_BB::Is_Live_Out_LRANGE(), iter, NOT_ALIASED, NULL, OP_code, OP_cond_def(), OP_load, OP_opnd, OP_opnds, OP_result, OP_results, OP_store, POSSIBLY_ALIASED, GRA_BB::Remove_Live_In_LRANGE(), GRA_BB::Remove_Live_Out_LRANGE(), LUNIT::Restore_Above(), SAME_LOCATION, Set_OP_opnd, Set_OP_result, LUNIT::Spill_Below(), GRA_BB_OP_FORWARD_ITER::Step(), TN_home, TN_Restore_Above(), TN_Spill_Below(), TRUE, and wn.
Referenced by LUNIT_Spill().
| SPILL_LIST* SPILL_LIST_Create_Gbb | ( | GRA_BB * | gbb, | |
| MEM_POOL * | mempool | |||
| ) | [inline] |
Definition at line 172 of file gra_spill.cxx.
References SPILL_LIST::gbb, SPILL_LIST::Init(), and TYPE_MEM_POOL_ALLOC.
Referenced by Move_Restore_Out_Of_LRANGE(), Move_Spill_Code_Above_Region(), and Move_Spill_Out_Of_LRANGE().
| SPILL_LIST* SPILL_LIST_Create_Lunit | ( | LUNIT * | lunit, | |
| MEM_POOL * | mempool | |||
| ) | [inline] |
Definition at line 163 of file gra_spill.cxx.
References SPILL_LIST::Init(), SPILL_LIST::lunit, and TYPE_MEM_POOL_ALLOC.
Referenced by Move_Spill_Code_Above_Region(), and Optimize_Placement().
| static void Spill_Prolog_Epilog_Save_LUNIT | ( | LRANGE * | lrange, | |
| LUNIT * | lunit, | |||
| GRA_BB * | gbb, | |||
| ST * | st | |||
| ) | [static] |
Definition at line 790 of file gra_spill.cxx.
References GRA_BB::Bb(), BB_first_op, BB_Remove_Op(), CGSPILL_GRA, CGSPILL_Insert_Ops_After(), CGSPILL_Insert_Ops_Before(), CGSPILL_Load_From_Memory(), CGSPILL_Store_To_Memory(), CGTARG_Copy_Operand_TN(), GRA_BB::Freq(), freq_restore_count, freq_spill_count, LUNIT::Has_Def(), LUNIT::Has_Exposed_Use(), GRA_BB::Is_Live_In_LRANGE(), GRA_BB::Is_Live_Out_LRANGE(), Make_Dedicated_Save_TN(), NULL, OP_copy, OP_next, OP_result, OPS_Init(), GRA_BB::Remove_Live_In_LRANGE(), GRA_BB::Remove_Live_Out_LRANGE(), GRA_BB::Rename_TN_References(), LUNIT::Restore_Above(), restore_count, Set_TN_save_creg, LUNIT::Spill_Below(), spill_count, LRANGE::Tn(), and TN_save_creg.
Referenced by LUNIT_Spill().
Definition at line 430 of file gra_spill.cxx.
References CGSPILL_Insert_Ops_Before_First_Use(), CGSPILL_Load_From_Memory(), CGSPILL_Prepend_Ops(), GRA_BB::Freq(), freq_restore_count, Gen_Spill_Restore(), and restore_count.
Referenced by LRANGE_Restore_Above(), LUNIT_Spill(), and Spill_Homeable_TN().
Definition at line 487 of file gra_spill.cxx.
References CGSPILL_Append_Ops(), CGSPILL_Insert_Ops_Before_First_Use(), CGSPILL_Load_From_Memory(), FALSE, GRA_BB::Freq(), freq_restore_count, Gen_Spill_Restore(), and restore_count.
Referenced by LRANGE_Restore_Below().
Definition at line 464 of file gra_spill.cxx.
References CGSPILL_Insert_Ops_After_Last_Def(), CGSPILL_Prepend_Ops(), CGSPILL_Store_To_Memory(), FALSE, GRA_BB::Freq(), freq_spill_count, Gen_Spill_Restore(), and spill_count.
Referenced by LRANGE_Spill_Above().
Definition at line 397 of file gra_spill.cxx.
References CGSPILL_Append_Ops(), CGSPILL_Insert_Ops_After_Last_Def(), CGSPILL_Store_To_Memory(), GRA_BB::Freq(), freq_spill_count, Gen_Spill_Restore(), and spill_count.
Referenced by LRANGE_Spill_Below(), LUNIT_Spill(), and Spill_Homeable_TN().
| static BOOL Uses_Region_TN | ( | const OP * | op, | |
| const GRA_REGION * | region | |||
| ) | [static] |
Definition at line 1165 of file gra_spill.cxx.
References FALSE, i, INT, OP_opnd, OP_opnds, Region_TN(), and TRUE.
Referenced by BB_Split_Exit_Glue().
float freq_restore_count [static] |
Definition at line 98 of file gra_spill.cxx.
Referenced by GRA_Spill(), Spill_Prolog_Epilog_Save_LUNIT(), TN_Restore_Above(), and TN_Restore_Below().
float freq_spill_count [static] |
Definition at line 98 of file gra_spill.cxx.
Referenced by GRA_Spill(), Spill_Prolog_Epilog_Save_LUNIT(), TN_Spill_Above(), and TN_Spill_Below().
| BOOL GRA_optimize_placement = TRUE |
Definition at line 89 of file gra_spill.cxx.
Referenced by Move_Restore_Out_Of_LRANGE(), and Move_Spill_Out_Of_LRANGE().
LUNIT* lunits_with_spills_head [static] |
Definition at line 94 of file gra_spill.cxx.
| float priority_count |
BB_LIST* region_entry_glue_bbs [static] |
Definition at line 96 of file gra_spill.cxx.
BB_LIST* region_exit_glue_bbs [static] |
Definition at line 97 of file gra_spill.cxx.
INT32 restore_count [static] |
Definition at line 99 of file gra_spill.cxx.
Referenced by GRA_Spill(), Spill_Prolog_Epilog_Save_LUNIT(), TN_Restore_Above(), and TN_Restore_Below().
INT32 spill_count [static] |
Definition at line 99 of file gra_spill.cxx.
Referenced by GRA_Spill(), Move_Spill_Out_Of_LRANGE(), Spill_Prolog_Epilog_Save_LUNIT(), TN_Spill_Above(), and TN_Spill_Below().
LRANGE_LIST* spilled_lranges [static] |
Definition at line 93 of file gra_spill.cxx.
Referenced by GRA_Note_Spill(), GRA_Spill(), and GRA_Spill_Initialize().
LRANGE* split_lranges_head [static] |
Definition at line 95 of file gra_spill.cxx.
1.5.6