#include <ipa_cg.h>

Definition at line 1011 of file ipa_cg.h.
typedef SEGMENTED_ARRAY<IPA_NODE> IPA_CALL_GRAPH::IPA_NODE_ARRAY [private] |
typedef SEGMENTED_ARRAY<IPA_EDGE> IPA_CALL_GRAPH::IPA_EDGE_ARRAY [private] |
typedef HASH_TABLE<IPA_NODE*, IPA_CLONE_ARRAY*> IPA_CALL_GRAPH::IPA_NODE_TO_IPA_CLONES_MAP [private] |
typedef HASH_TABLE<IPA_NODE*, IPA_NODE*> IPA_CALL_GRAPH::IPA_CLONE_TO_IPA_NODE_MAP [private] |
typedef HASH_TABLE<const IPA_NODE*, IPL_SUMMARY_PTRS*> IPA_CALL_GRAPH::IPA_NODE_TO_IPL_SUMMARY_MAP [private] |
Definition at line 3343 of file ipa_cg.cxx.
References PREORDER.
Referenced by Inliner(), and Perform_Interprocedural_Analysis().
| void IPA_CALL_GRAPH::Print | ( | FILE * | fp, | |
| TRAVERSAL_ORDER | order | |||
| ) |
Definition at line 3601 of file ipa_cg.cxx.
References BOOL, IPA_NODE_ITER::Current(), IPA_SUCC_ITER::Current_Edge(), FALSE, IPA_SUCC_ITER::First(), IPA_NODE_ITER::First(), fprintf(), IPA_NODE::Get_frequency(), IPA_EDGE::Get_frequency(), IPA_Node_Name(), IPA_NODE_ITER::Is_Empty(), IPA_SUCC_ITER::Is_Empty(), IPA_NODE_ITER::Next(), IPA_SUCC_ITER::Next(), and TRUE.
Definition at line 3348 of file ipa_cg.cxx.
References PREORDER.
Referenced by Build_Call_Graph(), Perform_Interprocedural_Analysis(), and Perform_Interprocedural_Optimization().
| void IPA_CALL_GRAPH::Print_vobose | ( | FILE * | fp, | |
| TRAVERSAL_ORDER | order | |||
| ) |
Definition at line 3366 of file ipa_cg.cxx.
References _pool, FB_FREQ::_value, IPA_EDGE::Array_Index(), BOOL, IPA_NODE::Clear_Visited(), compute_hotness(), IPA_NODE_ITER::Current(), IPA_EDGE::Edge_Index(), EFFECTIVE_WEIGHT(), FALSE, first, IPA_NODE_ITER::First(), float, fprintf(), IPA_NODE::Get_cycle_count(), IPA_NODE::Get_cycle_count_2(), SUMMARY_FEEDBACK::Get_effective_bb_count(), SUMMARY_FEEDBACK::Get_effective_stmt_count(), IPA_NODE::Get_feedback(), IPA_NODE::Get_frequency(), IPA_EDGE::Get_frequency(), Get_Sorted_Callsite_List(), IPA_NODE::Get_wn_count(), IPA_NODE::Has_frequency(), IPA_EDGE::Has_frequency(), IPA_EDGE::Has_Inline_Attrib(), IPA_NODE::Has_Noinline_Attrib(), INT, INT32, IPA_Enable_Inline, IPA_Max_Density, IPA_Min_Hotness, IPA_Node_Name(), IPA_PU_Hard_Limit, IPA_PU_Limit, IPA_PU_Minimum_Size, IPA_Small_Callee_Limit, IPA_NODE_ITER::Is_Empty(), SUMMARY_PROCEDURE::Is_Never_Invoked(), FB_FREQ::Known(), Map_Callsites(), IPA_NODE_ITER::Next(), NULL, Olimit, Orig_Prog_WN_Count, IPA_EDGE::reason_data(), IPA_EDGE::reason_id(), SBar, sprintf(), IPA_NODE::Summary_Proc(), Total_cycle_count_2, Total_Prog_Size, TRUE, UINT16, unsigned, USRCPOS_linenum, USRCPOS_srcpos, FB_FREQ::Value(), IPA_NODE::Weight(), IPA_EDGE::Whirl_Node(), and WN_Get_Linenum().
Definition at line 2741 of file ipa_cg.cxx.
References alloca, IPA_EDGE::Callsite_Id(), callsite_map, IPA_SUCC_ITER::Current_Edge(), FALSE, IPA_SUCC_ITER::First(), IPA_SUCC_ITER::Is_Empty(), IPA_NODE::Is_Visited(), IPA_SUCC_ITER::Next(), NULL, OPC_VCALL, OPR_CALL, OPR_ICALL, OPR_INTRINSIC_CALL, Parent_Map, IPA_NODE::Set_Visited(), IPA_EDGE::Set_Whirl_Node(), IPA_NODE::Total_Succ(), UINT32, IPA_NODE::Whirl_Tree(), WN_Fake_Call_EH_Region(), WN_ITER_wn, WN_opcode(), WN_operator(), WN_WALK_TreeIter(), and WN_WALK_TreeNext().
Referenced by Delete_Call(), Inline_Call(), IPO_Process_edge(), IPO_WN_Update_For_Struct_Opt(), Mark_readonly_param(), Perform_Inline_Script_Analysis(), Print_inline_decision(), Print_vobose(), Rename_Call_To_Cloned_PU(), and Reset_param_list().
Definition at line 2854 of file ipa_cg.cxx.
References _clone_to_orig_node_map, _graph, _orig_node_to_clones_map, _pool, DYN_ARRAY< T >::AddElement(), alloca, Clone_Array(), IPA_NODE::Cprop_Annot(), IPA_SUCC_ITER::Current_Edge(), IPA_PRED_ITER::Current_Edge(), IPA_SUCC_ITER::Current_Edge_Index(), IPA_PRED_ITER::Current_Edge_Index(), CXX_NEW, GRAPH::Delete_Edge(), EDGE_INDEX, HASH_TABLE< SIG_TYPE, DATA_TYPE >::Enter(), IPA_NODE::File_Index(), IPA_SUCC_ITER::First(), IPA_PRED_ITER::First(), IPA_NODE::Func_ST(), INT32, IPA_add_new_procedure(), IPO_Clone(), IPA_SUCC_ITER::Is_Empty(), IPA_PRED_ITER::Is_Empty(), Malloc_Mem_Pool, IPA_NODE::Mem_Pool(), MEM_POOL_Initialize, MEM_POOL_Push, IPA_NODE::Mod_Ref_Info(), IPA_NODE::Name(), IPA_PRED_ITER::Next(), IPA_SUCC_ITER::Next(), IPA_NODE::Node_Index(), NULL, IPA_NODE::Proc_Info_Index(), IPA_NODE::Set_Clone(), IPA_NODE::Set_Cprop_Annot(), IPA_NODE::Set_Mempool_Initialized(), IPA_NODE::Set_Mod_Ref_Info(), IPA_NODE::Set_Summary_Proc_Index(), IPA_NODE::Set_Total_Succ(), IPA_NODE::Summary_Proc(), IPA_NODE::Summary_Proc_Index(), and IPA_NODE::Total_Succ().
Referenced by IPA_DATA_FLOW::Clone(), DFBASE::Clone(), and IPO_Process_node().
Definition at line 3006 of file ipa_cg.cxx.
References _clone_to_orig_node_map, _graph, _orig_node_to_clones_map, _pool, GRAPH::Add_Edge(), DYN_ARRAY< T >::AddElement(), alloca, Copy_edge_cprop_annot(), IPA_SUCC_ITER::Current_Edge(), IPA_PRED_ITER::Current_Edge(), IPA_PRED_ITER::Current_Edge_Index(), CXX_NEW, GRAPH::Delete_Edge(), EDGE_INDEX, Edges_Have_Equiv_Cprop_Annots(), HASH_TABLE< SIG_TYPE, DATA_TYPE >::Enter(), IPA_NODE::File_Index(), HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), IPA_SUCC_ITER::First(), IPA_PRED_ITER::First(), IPA_NODE::Func_ST(), GRAPH_root, Init_Cprop_Annotations(), INT32, IPA_SUCC_ITER::Is_Empty(), IPA_PRED_ITER::Is_Empty(), Is_True, Malloc_Mem_Pool, IPA_NODE::Mod_Ref_Info(), IPA_PRED_ITER::Next(), IPA_SUCC_ITER::Next(), IPA_NODE::Node_Index(), NULL, IPA_NODE::Proc_Info_Index(), IPA_NODE::Set_Mod_Ref_Info(), IPA_NODE::Set_Quasi_Clone(), IPA_EDGE::Summary_Callsite(), and IPA_NODE::Summary_Proc_Index().
Referenced by IPA_CPROP_DF_FLOW::Meet().
Definition at line 3103 of file ipa_cg.cxx.
References IPA_NODE::Clear_Clone_Candidate(), IPA_NODE::Clear_Quasi_Clone(), Clone_Array(), Clone_Origin(), IPA_PRED_ITER::Current_Edge(), DYN_ARRAY< T >::Elements(), IPA_PRED_ITER::First(), IPA_NODE::Has_Aliased_Formal(), IPA_add_new_procedure(), IPO_Clone(), IPA_PRED_ITER::Is_Empty(), IPA_NODE::Is_Quasi_Clone(), Is_True, IPA_NODE::Mem_Pool(), MEM_POOL_Initialize, MEM_POOL_Push, IPA_NODE::Name(), IPA_PRED_ITER::Next(), Rename_Call_To_Cloned_PU(), IPA_NODE::Set_Aliased_Formal(), IPA_NODE::Set_Clone(), IPA_NODE::Set_Mempool_Initialized(), IPA_NODE::Set_Summary_Proc_Index(), IPA_NODE::Summary_Proc(), and UINT32.
Referenced by Perform_Interprocedural_Analysis().
Definition at line 3175 of file ipa_cg.cxx.
References _graph, alloca, Clone_Origin(), IPA_SUCC_ITER::Current_Edge(), IPA_PRED_ITER::Current_Edge(), IPA_PRED_ITER::Current_Edge_Index(), GRAPH::Delete_Edge(), GRAPH::Delete_Node(), EDGE_INDEX, IPA_SUCC_ITER::First(), IPA_PRED_ITER::First(), INT32, IPA_SUCC_ITER::Is_Empty(), IPA_PRED_ITER::Is_Empty(), IPA_NODE::Is_Quasi_Clone(), IPA_PRED_ITER::Next(), IPA_SUCC_ITER::Next(), IPA_NODE::Node_Index(), Union_Quasi_Clone_Cprop_Annot(), and void.
Referenced by Perform_Interprocedural_Analysis().
Definition at line 1167 of file ipa_cg.h.
References _clone_to_orig_node_map, HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), and Is_True.
Referenced by Init_Cprop_Annotations(), IPA_Node_Name(), Quasi_To_Real_Clone(), and Remove_Quasi_Clone().
| IPA_CLONE_ARRAY* IPA_CALL_GRAPH::Clone_Array | ( | IPA_NODE * | node | ) | const [inline] |
Definition at line 1175 of file ipa_cg.h.
References _orig_node_to_clones_map, HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), and NULL.
Referenced by Create_Clone(), IPA_Node_Name(), IPO_Clone(), Node_can_be_cloned(), and Quasi_To_Real_Clone().
| void IPA_CALL_GRAPH::Update_Node_After_Preopt | ( | IPA_NODE * | node, | |
| WN * | opt_wn, | |||
| SUMMARY_CALLSITE * | callsite_array, | |||
| IPL_SUMMARY_PTRS * | summary_ptrs | |||
| ) |
Definition at line 3222 of file ipa_cg.cxx.
References _graph, _pool, _preopt_node_to_new_summary_map, alloca, append_icall_list(), AUX_PU_node(), Aux_Pu_Table, Clear_ST_is_not_used, IPA_NODE::Clear_Visited(), IPA_SUCC_ITER::Current_Edge_Index(), CXX_NEW, GRAPH::Delete_Edge(), EDGE_INDEX, HASH_TABLE< SIG_TYPE, DATA_TYPE >::Enter(), IPA_SUCC_ITER::First(), SUMMARY_CALLSITE::Get_symbol_index(), IPA_NODE::Icall_List(), INT32, INVALID_NODE_INDEX, IPA_get_symbol_array(), IPA_SUCC_ITER::Is_Empty(), IPA_NODE::Map_Table(), IPA_SUCC_ITER::Next(), IPA_NODE::Node_Index(), GRAPH_TEMPLATE< NODE_USER, EDGE_USER >::Node_User(), IPA_NODE::Ocall_List(), IPA_NODE::Parent_Map(), IPA_NODE::Set_Preoptimized(), IPA_EDGE::Set_Propagated_Const(), IPA_NODE::Set_PU_Size(), IPA_NODE::Set_Total_Succ(), IPA_NODE::Set_Whirl_Tree(), ST_base, ST_base_idx(), ST_is_weak_symbol, ST_ptr(), ST_pu(), ST_st_idx, IPA_NODE::Summary_Proc(), UINT16, and WN_Parentize().
Referenced by IPA_Preoptimize().
| IPL_SUMMARY_PTRS* IPA_CALL_GRAPH::New_Summary_Ptrs | ( | const IPA_NODE * | node | ) | const [inline] |
Definition at line 1188 of file ipa_cg.h.
References _preopt_node_to_new_summary_map, HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), IPA_NODE::Is_Preoptimized(), and Is_True.
Referenced by get_actual_array(), get_callsite_array(), get_feedback_array(), get_formal_array(), get_global_array(), IPA_get_cfg_node_array(), IPA_get_chi_array(), IPA_get_common_array(), IPA_get_common_shape_array(), IPA_get_ctrl_dep_array(), IPA_get_expr_array(), IPA_get_loopinfo_array(), IPA_get_phi_array(), IPA_get_proj_region_array(), IPA_get_projected_node_array(), IPA_get_region_array(), IPA_get_scalar_array(), IPA_get_stid_array(), IPA_get_stmt_array(), IPA_get_term_array(), and IPA_get_value_array().
MEM_POOL* IPA_CALL_GRAPH::_pool [private] |
Definition at line 1021 of file ipa_cg.h.
Referenced by Create_Clone(), Create_Quasi_Clone(), Print_vobose(), and Update_Node_After_Preopt().
IPA_GRAPH* IPA_CALL_GRAPH::_graph [private] |
Definition at line 1022 of file ipa_cg.h.
Referenced by Create_Clone(), Create_Quasi_Clone(), Remove_Quasi_Clone(), and Update_Node_After_Preopt().
IPA_NODE_ARRAY* IPA_CALL_GRAPH::_nodes [private] |
IPA_EDGE_ARRAY* IPA_CALL_GRAPH::_edges [private] |
Definition at line 1025 of file ipa_cg.h.
Referenced by Clone_Origin(), Create_Clone(), and Create_Quasi_Clone().
Definition at line 1026 of file ipa_cg.h.
Referenced by Clone_Array(), Create_Clone(), and Create_Quasi_Clone().
Definition at line 1027 of file ipa_cg.h.
Referenced by New_Summary_Ptrs(), and Update_Node_After_Preopt().
1.5.6