#include <aequiv.h>

Definition at line 111 of file aequiv.h.
| AEQUIV::AEQUIV | ( | WN * | func_nd, | |
| ARRAY_DIRECTED_GRAPH16 * | array_dep_graph | |||
| ) | [inline] |
Definition at line 130 of file aequiv.h.
References _acfg, _acyclic_bit_vector, _array_dep_graph, _cfg, _cyclic_bit_vector, _func_nd, _la_hash_table, _la_stack, _pool, and NULL.
| INT AEQUIV::Num_Arrays | ( | ) | [inline, private] |
Definition at line 117 of file aequiv.h.
References _la_stack, and STACK< T >::Elements().
Referenced by Build_CFG(), Build_CFG_Rec(), Do_Color(), Do_Dataflow(), Equivalence_Arrays(), Set_Acyclic(), and Set_Array_Bit_Vector().
| void AEQUIV::Equivalence_Arrays | ( | ) |
Definition at line 137 of file aequiv.cxx.
References _acfg, _acyclic_bit_vector, _array_bit_vector, _cfg, _cyclic_bit_vector, _func_nd, LOCAL_ARRAY_DESC::_is_read, _la_hash_table, _la_stack, _pool, AEQUIV_pool_initialized, STACK< T >::Bottom_nth(), Build_CFG(), CXX_DELETE, CXX_DELETE_ARRAY, CXX_NEW, CXX_NEW_ARRAY, Do_Color(), Do_Dataflow(), STACK< T >::Elements(), Enter_Locals_Hash(), Enter_Locals_Stack(), FALSE, HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), fprintf(), Get_Trace(), i, INT, mBOOL, MEM_POOL_Initialize, MEM_POOL_Pop, MEM_POOL_Push, Num_Arrays(), Print_Graph(), Set_Acyclic(), Set_Array_Bit_Vector(), TFile, TP_LNOPT, TRUE, TT_LNO_AEQUIV, and Update_Code().
Referenced by Lnoptimizer().
| void AEQUIV::Enter_Locals_Stack | ( | ) | [private] |
Definition at line 236 of file aequiv.cxx.
References _la_stack, CLASS_VAR, CURRENT_SYMTAB, da_hash, HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), FOREACH_SYMBOL, i, INT, KIND_ARRAY, STACK< T >::Push(), SCLASS_AUTO, Sort_Stack(), ST_addr_passed(), ST_addr_saved(), ST_base_idx(), ST_class, ST_has_nested_ref, ST_is_initialized, ST_is_not_used, ST_is_reshaped, ST_sclass, ST_st_idx, ST_type, TY_kind, and TY_size.
Referenced by Equivalence_Arrays().
| void AEQUIV::Sort_Stack | ( | ) | [private] |
Definition at line 261 of file aequiv.cxx.
References _la_stack, STACK< T >::Bottom_nth(), STACK< T >::Elements(), fprintf(), Get_Trace(), i, INT, size, ST_base, ST_name, ST_type, TFile, TP_LNOPT, TT_LNO_AEQUIV, and TY_size.
Referenced by Enter_Locals_Stack().
| void AEQUIV::Enter_Locals_Hash | ( | ) | [private] |
Definition at line 290 of file aequiv.cxx.
References _la_hash_table, _la_stack, _pool, STACK< T >::Bottom_nth(), CXX_NEW, STACK< T >::Elements(), HASH_TABLE< SIG_TYPE, DATA_TYPE >::Enter(), and INT.
Referenced by Equivalence_Arrays().
| INT AEQUIV::Build_CFG | ( | ) | [private] |
Definition at line 316 of file aequiv.cxx.
References _cfg, _func_nd, _head_vertex, _pool, _tail_vertex, Add_CFG_Vertex(), Backpatch_CFG(), Build_CFG_Rec(), CXX_NEW, Num_Arrays(), and WN_func_body.
Referenced by Equivalence_Arrays().
| INT AEQUIV::Build_CFG_Rec | ( | WN * | wn, | |
| VINDEX16 * | current_v, | |||
| VINDEX16 | next_v, | |||
| GOTO_VERTEX_STACK * | goto_stack, | |||
| LABEL_STACK * | label_stack, | |||
| LABEL_VERTEX_HASH * | label_hash | |||
| ) | [private] |
Definition at line 350 of file aequiv.cxx.
References LOCAL_ARRAY_DESC::_address_taken, _head_vertex, _la_hash_table, _pool, _tail_vertex, GOTO_VERTEX::_vindex, GOTO_VERTEX::_wn, Add_CFG_Edge(), Add_CFG_Vertex(), BOOL, Build_CFG_Loop(), CXX_NEW, HASH_TABLE< SIG_TYPE, DATA_TYPE >::Enter(), FALSE, HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), Handle_Call(), Handle_Rhs(), Handle_Store(), i, INT, INT32, IOC_END, IOC_EOR, IOC_ERR, Is_True, NULL, Num_Arrays(), OPC_AGOTO, OPC_ALTENTRY, OPC_BLOCK, OPC_COMPGOTO, OPC_DO_LOOP, OPC_DO_WHILE, OPC_FALSEBR, OPC_GOTO, OPC_GOTO_OUTER_BLOCK, OPC_IF, OPC_IO, OPC_IO_ITEM, OPC_LABEL, OPC_RETURN, OPC_TRUEBR, OPC_WHILE_DO, opcode, OPCODE_has_inumber(), OPCODE_is_call(), OPCODE_is_expression(), OPCODE_is_load(), OPCODE_is_store(), OPCODE_operator(), OPR_ARRAY, OPR_GOTO, OPR_LDA, OPR_LDID, STACK< T >::Push(), TRUE, TY_is_volatile, WN_array_base, WN_else, WN_first(), WN_if_test, WN_io_item(), WN_kid(), WN_kid0(), WN_kid1(), WN_kid_count(), WN_label_number(), WN_next(), WN_opcode(), WN_operator(), WN_st(), WN_then, and WN_ty().
Referenced by Build_CFG().
| INT AEQUIV::Build_CFG_Loop | ( | WN * | wn, | |
| VINDEX16 | loopv, | |||
| GOTO_VERTEX_STACK * | goto_stack, | |||
| LABEL_STACK * | label_stack, | |||
| LABEL_VERTEX_HASH * | label_hash | |||
| ) | [private] |
Definition at line 724 of file aequiv.cxx.
References _head_vertex, _tail_vertex, GOTO_VERTEX::_vindex, GOTO_VERTEX::_wn, Add_CFG_Edge(), HASH_TABLE< SIG_TYPE, DATA_TYPE >::Enter(), Handle_Call(), Handle_Rhs(), Handle_Store(), i, INT, INT32, IOC_END, IOC_EOR, IOC_ERR, Is_True, OPC_AGOTO, OPC_ALTENTRY, OPC_BLOCK, OPC_COMPGOTO, OPC_FALSEBR, OPC_GOTO, OPC_GOTO_OUTER_BLOCK, OPC_IO, OPC_IO_ITEM, OPC_LABEL, OPC_RETURN, OPC_TRUEBR, opcode, OPCODE_has_inumber(), OPCODE_is_call(), OPCODE_is_expression(), OPCODE_is_store(), OPR_GOTO, STACK< T >::Push(), WN_first(), WN_io_item(), WN_kid(), WN_kid0(), WN_kid1(), WN_kid_count(), WN_label_number(), WN_next(), WN_opcode(), and WN_operator().
Referenced by Build_CFG_Rec().
Definition at line 568 of file aequiv.cxx.
References LOCAL_ARRAY_DESC::_address_taken, _la_hash_table, _pool, addr(), STACK< T >::Bottom_nth(), Build_St_Stack_And_Skip(), STACK< T >::Elements(), HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), Handle_Lhs(), Handle_Rhs(), i, INT, NULL, OPR_STID, TRUE, TY_is_volatile, TY_pointed, WN_kid0(), WN_kid1(), WN_kid_count(), WN_operator(), WN_st(), and WN_ty().
Referenced by Build_CFG_Loop(), and Build_CFG_Rec().
Definition at line 605 of file aequiv.cxx.
References LOCAL_ARRAY_DESC::_address_taken, _cyclic_bit_vector, LOCAL_ARRAY_DESC::_id, LOCAL_ARRAY_DESC::_is_written, _la_hash_table, STACK< T >::Bottom_nth(), HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), Handle_Rhs(), INT, OPCODE_is_load(), OPR_LDA, OPR_LDID, TRUE, WN_kid(), WN_kid_count(), WN_opcode(), WN_operator(), and WN_st().
Referenced by Handle_Store().
Definition at line 629 of file aequiv.cxx.
References LOCAL_ARRAY_DESC::_address_taken, _cyclic_bit_vector, LOCAL_ARRAY_DESC::_id, LOCAL_ARRAY_DESC::_is_read, _la_hash_table, STACK< T >::Bottom_nth(), HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), INT, LWN_Get_Parent, OPCODE_is_prefetch(), OPCODE_operator(), OPR_ARRAY, OPR_ILOAD, OPR_ISTORE, OPR_LDA, OPR_LDID, TRUE, WN_kid(), WN_kid1(), WN_kid_count(), WN_opcode(), WN_operator(), and WN_st().
Referenced by Build_CFG_Loop(), Build_CFG_Rec(), Handle_Lhs(), and Handle_Store().
Definition at line 665 of file aequiv.cxx.
References LOCAL_ARRAY_DESC::_address_taken, _cyclic_bit_vector, LOCAL_ARRAY_DESC::_id, LOCAL_ARRAY_DESC::_is_read, LOCAL_ARRAY_DESC::_is_written, _la_hash_table, STACK< T >::Bottom_nth(), HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), FmtAssert, INT, LWN_Get_Parent, OPR_ARRAY, OPR_BLOCK, OPR_LDA, OPR_LDID, OPR_PARM, TRUE, WN_first(), WN_flag(), WN_kid(), WN_kid_count(), WN_next(), WN_operator(), WN_PARM_BY_REFERENCE, WN_PARM_PASSED_NOT_SAVED, and WN_st().
Referenced by Build_CFG_Loop(), and Build_CFG_Rec().
| INT AEQUIV::Backpatch_CFG | ( | GOTO_VERTEX_STACK * | goto_stack, | |
| LABEL_STACK * | label_stack, | |||
| LABEL_VERTEX_HASH * | label_hash | |||
| ) | [private] |
Definition at line 836 of file aequiv.cxx.
References GOTO_VERTEX::_vindex, GOTO_VERTEX::_wn, Add_CFG_Edge(), STACK< T >::Bottom_nth(), STACK< T >::Elements(), HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), i, INT, Is_True, OPC_AGOTO, opcode, WN_label_number(), and WN_opcode().
Referenced by Build_CFG().
| VINDEX16 AEQUIV::Add_CFG_Vertex | ( | BIT_VECTOR * | bit_vector | ) | [private] |
Definition at line 860 of file aequiv.cxx.
References _cfg, _cyclic_bit_vector, SCC_DIRECTED_GRAPH16::Add_Vertex(), STACK< T >::Bottom_nth(), STACK< T >::Elements(), NULL, STACK< T >::Push(), and result.
Referenced by Build_CFG(), and Build_CFG_Rec().
Definition at line 166 of file aequiv.h.
References _cfg, and SCC_DIRECTED_GRAPH16::Add_Edge().
Referenced by Backpatch_CFG(), Build_CFG_Loop(), and Build_CFG_Rec().
| void AEQUIV::Print_Graph | ( | FILE * | fp, | |
| SCC_DIRECTED_GRAPH16 * | graph | |||
| ) | [private] |
Definition at line 812 of file aequiv.cxx.
References _acyclic_bit_vector, _cfg, _cyclic_bit_vector, STACK< T >::Bottom_nth(), fprintf(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Next_Out_Edge(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Next_Vertex(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Out_Edge(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Sink(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Vertex(), and i.
Referenced by Equivalence_Arrays().
| void AEQUIV::Set_Acyclic | ( | ) | [private] |
Definition at line 872 of file aequiv.cxx.
References _acfg, _acyclic_bit_vector, _cfg, _cyclic_bit_vector, _pool, SCC_DIRECTED_GRAPH16::Acyclic_Condensation(), STACK< T >::Bottom_nth(), CXX_NEW, STACK< T >::Elements(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Next_Vertex(), SCC_DIRECTED_GRAPH16::Get_Scc_Id(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Vertex(), Num_Arrays(), STACK< T >::Push(), and scc.
Referenced by Equivalence_Arrays().
| void AEQUIV::Do_Dataflow | ( | ) | [private] |
Definition at line 897 of file aequiv.cxx.
References _acfg, _acyclic_bit_vector, STACK< T >::Bottom_nth(), CXX_NEW, CXX_NEW_ARRAY, STACK< T >::Elements(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_In_Edge(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Next_In_Edge(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Next_Out_Edge(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Out_Edge(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Sink(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Source(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Vertex_Count(), i, INT, SCC_DIRECTED_GRAPH16::Level_Sort(), LNO_local_pool, MEM_POOL_Pop, MEM_POOL_Push, Num_Arrays(), and STACK< T >::Push().
Referenced by Equivalence_Arrays().
| void AEQUIV::Set_Array_Bit_Vector | ( | ) | [private] |
Definition at line 968 of file aequiv.cxx.
References _acfg, _acyclic_bit_vector, _array_bit_vector, _pool, STACK< T >::Bottom_nth(), CXX_NEW, DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Next_Vertex(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Vertex(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Vertex_Count(), i, INT, Num_Arrays(), STACK< T >::Push(), and BIT_VECTOR::Test().
Referenced by Equivalence_Arrays().
Definition at line 998 of file aequiv.cxx.
References _acfg, LOCAL_ARRAY_DESC::_address_taken, _array_bit_vector, LOCAL_ARRAY_DESC::_is_read, _la_hash_table, _la_stack, BOOL, STACK< T >::Bottom_nth(), CXX_NEW, CXX_NEW_ARRAY, FALSE, HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), fprintf(), Get_Trace(), DIRECTED_GRAPH16< EDGE_TYPE, VERTEX_TYPE >::Get_Vertex_Count(), i, INT, BIT_VECTOR::Intersects(), LNO_local_pool, mBOOL, MEM_POOL_Pop, MEM_POOL_Push, Num_Arrays(), result, Set_ST_is_not_used, St_Block_Union(), TFile, TP_LNOPT, TRUE, and TT_LNO_AEQUIV.
Referenced by Equivalence_Arrays().
Definition at line 1057 of file aequiv.cxx.
References LOCAL_ARRAY_DESC::_address_taken, LOCAL_ARRAY_DESC::_id, LOCAL_ARRAY_DESC::_is_read, _la_hash_table, Alias_Mgr, Contains_Unread_Array(), Create_alias(), HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), INT, LWN_Delete_Tree(), LWN_Get_Parent, Note_Invalid_IP_Alias_Class(), OPC_BLOCK, opcode, OPCODE_is_load(), OPCODE_is_prefetch(), OPCODE_is_store(), OPCODE_operator(), OPR_LDA, OPR_PRAGMA, tmp, WN_first(), WN_kid(), WN_kid_count(), WN_next(), WN_opcode(), WN_pragma(), WN_PRAGMA_LASTLOCAL, WN_PRAGMA_LOCAL, and WN_st().
Referenced by Equivalence_Arrays().
Definition at line 1111 of file aequiv.cxx.
References LOCAL_ARRAY_DESC::_address_taken, LOCAL_ARRAY_DESC::_id, LOCAL_ARRAY_DESC::_is_read, _la_hash_table, FALSE, HASH_TABLE< SIG_TYPE, DATA_TYPE >::Find(), INT, opcode, OPCODE_operator(), OPR_LDA, TRUE, WN_kid(), WN_kid_count(), WN_opcode(), and WN_st().
Referenced by Update_Code().
LOCAL_ARRAY_HASH_TABLE* AEQUIV::_la_hash_table [private] |
Definition at line 112 of file aequiv.h.
Referenced by AEQUIV(), Build_CFG_Rec(), Contains_Unread_Array(), Do_Color(), Enter_Locals_Hash(), Equivalence_Arrays(), Handle_Call(), Handle_Lhs(), Handle_Rhs(), Handle_Store(), and Update_Code().
LOCAL_ARRAY_STACK* AEQUIV::_la_stack [private] |
Definition at line 113 of file aequiv.h.
Referenced by AEQUIV(), Do_Color(), Enter_Locals_Hash(), Enter_Locals_Stack(), Equivalence_Arrays(), Num_Arrays(), and Sort_Stack().
WN* AEQUIV::_func_nd [private] |
Definition at line 114 of file aequiv.h.
Referenced by AEQUIV(), Build_CFG(), and Equivalence_Arrays().
MEM_POOL* AEQUIV::_pool [private] |
Definition at line 115 of file aequiv.h.
Referenced by AEQUIV(), Build_CFG(), Build_CFG_Rec(), Enter_Locals_Hash(), Equivalence_Arrays(), Handle_Store(), Set_Acyclic(), and Set_Array_Bit_Vector().
ARRAY_DIRECTED_GRAPH16* AEQUIV::_array_dep_graph [private] |
BIT_VECTOR_STACK* AEQUIV::_cyclic_bit_vector [private] |
Definition at line 117 of file aequiv.h.
Referenced by Add_CFG_Vertex(), AEQUIV(), Equivalence_Arrays(), Handle_Call(), Handle_Lhs(), Handle_Rhs(), Print_Graph(), and Set_Acyclic().
BIT_VECTOR_STACK* AEQUIV::_acyclic_bit_vector [private] |
Definition at line 125 of file aequiv.h.
Referenced by AEQUIV(), Do_Dataflow(), Equivalence_Arrays(), Print_Graph(), Set_Acyclic(), and Set_Array_Bit_Vector().
BIT_VECTOR_STACK* AEQUIV::_array_bit_vector [private] |
Definition at line 128 of file aequiv.h.
Referenced by Do_Color(), Equivalence_Arrays(), and Set_Array_Bit_Vector().
SCC_DIRECTED_GRAPH16* AEQUIV::_cfg [private] |
Definition at line 147 of file aequiv.h.
Referenced by Add_CFG_Edge(), Add_CFG_Vertex(), AEQUIV(), Build_CFG(), Equivalence_Arrays(), Print_Graph(), and Set_Acyclic().
SCC_DIRECTED_GRAPH16* AEQUIV::_acfg [private] |
Definition at line 148 of file aequiv.h.
Referenced by AEQUIV(), Do_Color(), Do_Dataflow(), Equivalence_Arrays(), Set_Acyclic(), and Set_Array_Bit_Vector().
VINDEX16 AEQUIV::_head_vertex [private] |
Definition at line 149 of file aequiv.h.
Referenced by Build_CFG(), Build_CFG_Loop(), and Build_CFG_Rec().
VINDEX16 AEQUIV::_tail_vertex [private] |
Definition at line 150 of file aequiv.h.
Referenced by Build_CFG(), Build_CFG_Loop(), and Build_CFG_Rec().
1.5.6