#include <opt_vn_expr.h>


Public Types | |
| enum | PHI_TAG { PHI_TAG_UNKNOWN } |
| enum | KIND { LITERAL, UNARY, BINARY, TERNARY, INTR_OP, PHI, LDA_ADDR, ARRAY_ADDR, MEMLOC } |
| typedef VN_EXPR * | PTR |
| typedef const VN_EXPR * | CONST_PTR |
Public Member Functions | |
| virtual void | free ()=0 |
| virtual KIND | get_kind () const =0 |
| virtual UINT32 | get_num_opnds () const =0 |
| virtual VN_VALNUM | get_opnd (UINT i=0) const |
| virtual BOOL | has_top_opnd () const =0 |
| virtual BOOL | has_bottom_opnd () const =0 |
| virtual OPCODE | get_opc () const |
| virtual INTRINSIC | get_intr_opc () const |
| virtual PHI_TAG | get_phi_tag () const |
| virtual IDTYPE | get_block_id () const |
| virtual const TCON & | get_tcon () const |
| virtual INT32 | get_lda_cr_id () const |
| virtual INT32 | get_num_dims () const |
| virtual WN_ESIZE | get_esize () const |
| virtual MTYPE | get_dsctype () const |
| virtual VN_VALNUM | get_bytesize () const |
| virtual VN_VALNUM | get_offset () const |
| virtual VN_VALNUM | get_base_addr () const |
| virtual VN_VALNUM | get_vsym (UINT i=0) const |
| virtual void | set_opnd (UINT32 i, VN_VALNUM vn) |
| virtual void | set_opnd_vsym (UINT32 i, VN_VALNUM vn) |
| virtual PTR | simplify (VN *v)=0 |
| virtual size_t | hash ()=0 |
| virtual BOOL | is_equal_to (CONST_PTR expr) const =0 |
| virtual void | print (FILE *fp=stderr) const =0 |
Static Public Member Functions | |
| static void | Init_Free_Lists (MEM_POOL *mpool=Malloc_Mem_Pool) |
| static void | Reclaim_Free_Lists () |
| static PTR | Create_Literal (const TCON &tcon) |
| static PTR | Create_Unary (OPCODE opc, const VN_VALNUM &vn1) |
| static PTR | Create_Binary (OPCODE opc, const VN_VALNUM &vn1, const VN_VALNUM &vn2) |
| static PTR | Create_Ternary (OPCODE opc, const VN_VALNUM &vn1, const VN_VALNUM &vn2, const VN_VALNUM &vn3) |
| static PTR | Create_Intr_Op (INTRINSIC intr_opc, UINT32 num_opnds) |
| static PTR | Create_Phi (UINT32 num_opnds, IDTYPE block_id, PHI_TAG phi_tag=PHI_TAG_UNKNOWN) |
| static PTR | Create_Lda_Addr (INT32 lda_cr_id) |
| static PTR | Create_Array_Addr (WN_ESIZE esize, INT32 num_dims) |
| static PTR | Create_Memloc (MTYPE dsctype, const VN_VALNUM &bytesize, const VN_VALNUM &offset, const VN_VALNUM &base_addr, const VN_VALNUM &vsym_valnum) |
Static Protected Attributes | |
| static MEM_POOL * | _Mpool = NULL |
Definition at line 258 of file opt_vn_expr.h.
| typedef VN_EXPR* VN_EXPR::PTR |
Definition at line 262 of file opt_vn_expr.h.
| typedef const VN_EXPR* VN_EXPR::CONST_PTR |
Definition at line 263 of file opt_vn_expr.h.
| enum VN_EXPR::PHI_TAG |
| enum VN_EXPR::KIND |
Definition at line 279 of file opt_vn_expr.h.
| void VN_EXPR::Init_Free_Lists | ( | MEM_POOL * | mpool = Malloc_Mem_Pool |
) | [static] |
Definition at line 347 of file opt_vn_expr.cxx.
References _Mpool, VN_UNARY_EXPR::Init_Free_List(), VN_BINARY_EXPR::Init_Free_List(), VN_TERNARY_EXPR::Init_Free_List(), VN_PHI_EXPR::Init_Free_List(), VN_LITERAL_EXPR::Init_Free_List(), VN_ARRAY_ADDR_EXPR::Init_Free_List(), VN_LDA_ADDR_EXPR::Init_Free_List(), VN_INTR_OP_EXPR::Init_Free_List(), and VN_MEMLOC_EXPR::Init_Free_List().
Referenced by COMP_UNIT::COMP_UNIT().
| void VN_EXPR::Reclaim_Free_Lists | ( | ) | [static] |
Definition at line 366 of file opt_vn_expr.cxx.
References _Mpool, NULL, VN_INTR_OP_EXPR::Reclaim_Free_List(), VN_TERNARY_EXPR::Reclaim_Free_List(), VN_PHI_EXPR::Reclaim_Free_List(), VN_BINARY_EXPR::Reclaim_Free_List(), VN_MEMLOC_EXPR::Reclaim_Free_List(), VN_LITERAL_EXPR::Reclaim_Free_List(), VN_LDA_ADDR_EXPR::Reclaim_Free_List(), VN_UNARY_EXPR::Reclaim_Free_List(), and VN_ARRAY_ADDR_EXPR::Reclaim_Free_List().
Referenced by COMP_UNIT::~COMP_UNIT().
| VN_EXPR::PTR VN_EXPR::Create_Literal | ( | const TCON & | tcon | ) | [static] |
Definition at line 387 of file opt_vn_expr.cxx.
References VN_LITERAL_EXPR::Create().
Referenced by VN::_init_integer_valnum_map(), VN::_valnum_expr(), VN::_valnum_integer(), Create_Folded_Literal(), Create_Scalar_Literal_From_Int(), VN_BINARY_EXPR::simplify(), and VN_INTR_OP_EXPR::simplify().
| VN_EXPR::PTR VN_EXPR::Create_Unary | ( | OPCODE | opc, | |
| const VN_VALNUM & | vn1 | |||
| ) | [static] |
Definition at line 394 of file opt_vn_expr.cxx.
References VN_UNARY_EXPR::Create().
Referenced by VN_BINARY_EXPR::_simplify_2literals(), VN_BINARY_EXPR::_simplify_3adds(), VN::_valnum_implicit_integral_cvt(), VN::_valnum_op(), Create_Unary_Opr(), VN_MEMLOC_EXPR::simplify(), VN_ARRAY_ADDR_EXPR::simplify(), VN_BINARY_EXPR::simplify(), VN_TERNARY_EXPR::simplify(), VN_UNARY_EXPR::simplify(), VN_PHI_EXPR::simplify(), and VN_INTR_OP_EXPR::simplify().
| VN_EXPR::PTR VN_EXPR::Create_Binary | ( | OPCODE | opc, | |
| const VN_VALNUM & | vn1, | |||
| const VN_VALNUM & | vn2 | |||
| ) | [static] |
Definition at line 402 of file opt_vn_expr.cxx.
References VN_BINARY_EXPR::Create().
Referenced by VN_IVC::_get_literal_diff(), VN::_valnum_implicit_integral_cvt(), VN::_valnum_op(), Create_Binary_Opr(), and VN_UNARY_EXPR::simplify().
| VN_EXPR::PTR VN_EXPR::Create_Ternary | ( | OPCODE | opc, | |
| const VN_VALNUM & | vn1, | |||
| const VN_VALNUM & | vn2, | |||
| const VN_VALNUM & | vn3 | |||
| ) | [static] |
Definition at line 411 of file opt_vn_expr.cxx.
References VN_TERNARY_EXPR::Create().
Referenced by VN::_valnum_op().
| VN_EXPR::PTR VN_EXPR::Create_Intr_Op | ( | INTRINSIC | intr_opc, | |
| UINT32 | num_opnds | |||
| ) | [static] |
Definition at line 421 of file opt_vn_expr.cxx.
References VN_INTR_OP_EXPR::Create().
Referenced by VN::_valnum_op().
| VN_EXPR::PTR VN_EXPR::Create_Phi | ( | UINT32 | num_opnds, | |
| IDTYPE | block_id, | |||
| PHI_TAG | phi_tag = PHI_TAG_UNKNOWN | |||
| ) | [static] |
Definition at line 428 of file opt_vn_expr.cxx.
References VN_PHI_EXPR::Create().
Referenced by VN::_valnum_phi_list().
| VN_EXPR::PTR VN_EXPR::Create_Lda_Addr | ( | INT32 | lda_cr_id | ) | [static] |
Definition at line 437 of file opt_vn_expr.cxx.
References VN_LDA_ADDR_EXPR::Create().
Referenced by VN::_valnum_expr().
| VN_EXPR::PTR VN_EXPR::Create_Array_Addr | ( | WN_ESIZE | esize, | |
| INT32 | num_dims | |||
| ) | [static] |
Definition at line 444 of file opt_vn_expr.cxx.
References VN_ARRAY_ADDR_EXPR::Create().
Referenced by VN::_valnum_op().
| VN_EXPR::PTR VN_EXPR::Create_Memloc | ( | MTYPE | dsctype, | |
| const VN_VALNUM & | bytesize, | |||
| const VN_VALNUM & | offset, | |||
| const VN_VALNUM & | base_addr, | |||
| const VN_VALNUM & | vsym_valnum | |||
| ) | [static] |
Definition at line 451 of file opt_vn_expr.cxx.
References VN_MEMLOC_EXPR::Create().
Referenced by VN::_valnum_memloc_load(), VN::_valnum_memloc_store(), and VN_MEMLOC_EXPR::simplify().
| virtual void VN_EXPR::free | ( | ) | [pure virtual] |
Implemented in VN_LITERAL_EXPR, VN_UNARY_EXPR, VN_BINARY_EXPR, VN_TERNARY_EXPR, VN_INTR_OP_EXPR, VN_PHI_EXPR, VN_LDA_ADDR_EXPR, VN_ARRAY_ADDR_EXPR, and VN_MEMLOC_EXPR.
Referenced by VN_BINARY_EXPR::_fold_2literals(), VN_IVC::_get_literal_diff(), VN_BINARY_EXPR::_simplify_2literals(), VN_BINARY_EXPR::_simplify_4adds(), VN::_valnum_integer(), VN::_valnum_memloc_store(), VN::_valnum_vn_expr(), VN_MEMLOC_EXPR::simplify(), and VN::VN().
| virtual KIND VN_EXPR::get_kind | ( | ) | const [pure virtual] |
Implemented in VN_LITERAL_EXPR, VN_UNARY_EXPR, VN_BINARY_EXPR, VN_TERNARY_EXPR, VN_INTR_OP_EXPR, VN_PHI_EXPR, VN_LDA_ADDR_EXPR, VN_ARRAY_ADDR_EXPR, and VN_MEMLOC_EXPR.
Referenced by VALNUM_FRE::_disabled_expr(), VN_BINARY_EXPR::_fold_2literals(), VN_IVC::_get_literal_diff(), VALNUM_FRE::_ivc_classify(), VALNUM_FRE::_may_be_redundant_expr(), VALNUM_FRE::_select_for_valnum_list(), VN_BINARY_EXPR::_simplify_2literals(), VALNUM_FRE::_substitute_literal(), VALNUM_FRE::_subsumable_by_branch(), VN::_valnum_vn_expr(), VALNUM_FRE::apply(), VN_IVC::classify(), VN_PHI_EXPR::is_equal_to(), VN_UNARY_EXPR::is_equal_to(), VN_MEMLOC_EXPR::is_equal_to(), VN_BINARY_EXPR::is_equal_to(), VN_LDA_ADDR_EXPR::is_equal_to(), VN_ARRAY_ADDR_EXPR::is_equal_to(), VN_INTR_OP_EXPR::is_equal_to(), VN_TERNARY_EXPR::is_equal_to(), VN_IVC::Is_induction_step(), VN_IVC::Is_Induction_Var(), Is_Literal_Expr(), Is_Rty_Opr(), Is_Rty_Opr2(), Is_Singular_Expr(), VN_MEMLOC_EXPR::simplify(), and VN::VN().
| virtual UINT32 VN_EXPR::get_num_opnds | ( | ) | const [pure virtual] |
Implemented in VN_LITERAL_EXPR, VN_UNARY_EXPR, VN_BINARY_EXPR, VN_TERNARY_EXPR, VN_INTR_OP_EXPR, VN_PHI_EXPR, VN_LDA_ADDR_EXPR, VN_ARRAY_ADDR_EXPR, and VN_MEMLOC_EXPR.
Referenced by VALNUM_FRE::_ivc_classify(), VALNUM_FRE::_select_for_valnum_list(), VN_IVC::classify(), VN_PHI_EXPR::is_equal_to(), VN_INTR_OP_EXPR::is_equal_to(), VN_ARRAY_ADDR_EXPR::is_equal_to(), and VN_IVC::Is_Induction_Var().
Reimplemented in VN_UNARY_EXPR, VN_BINARY_EXPR, VN_TERNARY_EXPR, VN_INTR_OP_EXPR, VN_PHI_EXPR, and VN_ARRAY_ADDR_EXPR.
Definition at line 471 of file opt_vn_expr.cxx.
References VN_VALNUM::Bottom(), and Unimplemented().
Referenced by VN_IVC::_enter_class(), VALNUM_FRE::_select_for_valnum_list(), VN_BINARY_EXPR::_simplify_add(), VN_BINARY_EXPR::_simplify_sub(), VN::_valnum_vn_expr(), VN_IVC::classify(), VN_PHI_EXPR::is_equal_to(), VN_UNARY_EXPR::is_equal_to(), VN_BINARY_EXPR::is_equal_to(), VN_ARRAY_ADDR_EXPR::is_equal_to(), VN_INTR_OP_EXPR::is_equal_to(), VN_TERNARY_EXPR::is_equal_to(), VN_IVC::Is_induction_step(), VN_IVC::Is_Induction_Var(), VN_MEMLOC_EXPR::simplify(), and VN_UNARY_EXPR::simplify().
| virtual BOOL VN_EXPR::has_top_opnd | ( | ) | const [pure virtual] |
Implemented in VN_LITERAL_EXPR, VN_UNARY_EXPR, VN_BINARY_EXPR, VN_TERNARY_EXPR, VN_INTR_OP_EXPR, VN_PHI_EXPR, VN_LDA_ADDR_EXPR, VN_ARRAY_ADDR_EXPR, and VN_MEMLOC_EXPR.
| virtual BOOL VN_EXPR::has_bottom_opnd | ( | ) | const [pure virtual] |
Implemented in VN_LITERAL_EXPR, VN_UNARY_EXPR, VN_BINARY_EXPR, VN_TERNARY_EXPR, VN_INTR_OP_EXPR, VN_PHI_EXPR, VN_LDA_ADDR_EXPR, VN_ARRAY_ADDR_EXPR, and VN_MEMLOC_EXPR.
Referenced by VN::_valnum_memloc_store(), and VN::_valnum_vn_expr().
| OPCODE VN_EXPR::get_opc | ( | ) | const [virtual] |
Reimplemented in VN_UNARY_EXPR, VN_BINARY_EXPR, and VN_TERNARY_EXPR.
Definition at line 478 of file opt_vn_expr.cxx.
References OPCODE_UNKNOWN, and Unimplemented().
Referenced by VN_IVC::_enter_class(), VN_BINARY_EXPR::_simplify_add(), VN_BINARY_EXPR::_simplify_sub(), VN::_valnum_vn_expr(), VN_IVC::classify(), VN_UNARY_EXPR::is_equal_to(), VN_BINARY_EXPR::is_equal_to(), VN_TERNARY_EXPR::is_equal_to(), VN_IVC::Is_induction_step(), Is_Rty_Opr(), Is_Rty_Opr2(), Is_Singular_Expr(), VN_MEMLOC_EXPR::simplify(), and VN_UNARY_EXPR::simplify().
| INTRINSIC VN_EXPR::get_intr_opc | ( | ) | const [virtual] |
Reimplemented in VN_INTR_OP_EXPR.
Definition at line 485 of file opt_vn_expr.cxx.
References INTRINSIC_INVALID, and Unimplemented().
Referenced by VN_INTR_OP_EXPR::is_equal_to().
| VN_EXPR::PHI_TAG VN_EXPR::get_phi_tag | ( | ) | const [virtual] |
Reimplemented in VN_PHI_EXPR.
Definition at line 492 of file opt_vn_expr.cxx.
References PHI_TAG_UNKNOWN, and Unimplemented().
Referenced by VN_PHI_EXPR::is_equal_to().
| IDTYPE VN_EXPR::get_block_id | ( | ) | const [virtual] |
Reimplemented in VN_PHI_EXPR.
Definition at line 499 of file opt_vn_expr.cxx.
References Unimplemented().
Referenced by VN_PHI_EXPR::is_equal_to().
| const TCON & VN_EXPR::get_tcon | ( | ) | const [virtual] |
Reimplemented in VN_LITERAL_EXPR.
Definition at line 506 of file opt_vn_expr.cxx.
References Unimplemented(), and Zero_I4_Tcon.
Referenced by VN_IVC::_get_literal_diff(), VN_BINARY_EXPR::_simplify_2literals(), VALNUM_FRE::_substitute_literal(), VN::_valnum_vn_expr(), Create_Folded_Literal(), VN_LITERAL_EXPR::is_equal_to(), VN_MEMLOC_EXPR::simplify(), VN_BINARY_EXPR::simplify(), VN_TERNARY_EXPR::simplify(), and VN_INTR_OP_EXPR::simplify().
| INT32 VN_EXPR::get_lda_cr_id | ( | ) | const [virtual] |
Definition at line 525 of file opt_vn_expr.cxx.
References Unimplemented().
Referenced by VN_LDA_ADDR_EXPR::is_equal_to().
| INT32 VN_EXPR::get_num_dims | ( | ) | const [virtual] |
Reimplemented in VN_ARRAY_ADDR_EXPR.
Definition at line 532 of file opt_vn_expr.cxx.
References Unimplemented().
| WN_ESIZE VN_EXPR::get_esize | ( | ) | const [virtual] |
Reimplemented in VN_ARRAY_ADDR_EXPR.
Definition at line 539 of file opt_vn_expr.cxx.
References Unimplemented().
Referenced by VN_ARRAY_ADDR_EXPR::is_equal_to().
| MTYPE VN_EXPR::get_dsctype | ( | ) | const [virtual] |
Reimplemented in VN_MEMLOC_EXPR.
Definition at line 546 of file opt_vn_expr.cxx.
References MTYPE_UNKNOWN, and Unimplemented().
Referenced by VALNUM_FRE::_disabled_expr(), and VN_MEMLOC_EXPR::is_equal_to().
| VN_VALNUM VN_EXPR::get_bytesize | ( | ) | const [virtual] |
Reimplemented in VN_MEMLOC_EXPR.
Definition at line 553 of file opt_vn_expr.cxx.
References VN_VALNUM::Bottom(), and Unimplemented().
Referenced by VALNUM_FRE::_select_for_valnum_list(), and VN_MEMLOC_EXPR::is_equal_to().
| VN_VALNUM VN_EXPR::get_offset | ( | ) | const [virtual] |
Reimplemented in VN_MEMLOC_EXPR.
Definition at line 560 of file opt_vn_expr.cxx.
References VN_VALNUM::Bottom(), and Unimplemented().
Referenced by VALNUM_FRE::_select_for_valnum_list(), and VN_MEMLOC_EXPR::is_equal_to().
| VN_VALNUM VN_EXPR::get_base_addr | ( | ) | const [virtual] |
Reimplemented in VN_MEMLOC_EXPR.
Definition at line 567 of file opt_vn_expr.cxx.
References VN_VALNUM::Bottom(), and Unimplemented().
Referenced by VALNUM_FRE::_select_for_valnum_list(), and VN_MEMLOC_EXPR::is_equal_to().
Reimplemented in VN_INTR_OP_EXPR, and VN_MEMLOC_EXPR.
Definition at line 574 of file opt_vn_expr.cxx.
References VN_VALNUM::Bottom(), and Unimplemented().
Referenced by VALNUM_FRE::_select_for_valnum_list(), VN_MEMLOC_EXPR::is_equal_to(), and VN_INTR_OP_EXPR::is_equal_to().
Reimplemented in VN_UNARY_EXPR, VN_BINARY_EXPR, VN_TERNARY_EXPR, VN_INTR_OP_EXPR, VN_PHI_EXPR, and VN_ARRAY_ADDR_EXPR.
Definition at line 513 of file opt_vn_expr.cxx.
References Unimplemented().
Referenced by VN::_valnum_op(), and VN::_valnum_phi_list().
Reimplemented in VN_INTR_OP_EXPR.
Definition at line 519 of file opt_vn_expr.cxx.
References Unimplemented().
Referenced by VN::_valnum_op().
Implemented in VN_LITERAL_EXPR, VN_UNARY_EXPR, VN_BINARY_EXPR, VN_TERNARY_EXPR, VN_INTR_OP_EXPR, VN_PHI_EXPR, VN_LDA_ADDR_EXPR, VN_ARRAY_ADDR_EXPR, and VN_MEMLOC_EXPR.
Referenced by VN_IVC::_get_literal_diff(), VN_BINARY_EXPR::_simplify_add(), VN_BINARY_EXPR::_simplify_sub(), VN::_valnum_memloc_store(), VN::_valnum_vn_expr(), and VN_MEMLOC_EXPR::simplify().
| virtual size_t VN_EXPR::hash | ( | ) | [pure virtual] |
Implemented in VN_LITERAL_EXPR, VN_UNARY_EXPR, VN_BINARY_EXPR, VN_TERNARY_EXPR, VN_INTR_OP_EXPR, VN_PHI_EXPR, VN_LDA_ADDR_EXPR, VN_ARRAY_ADDR_EXPR, and VN_MEMLOC_EXPR.
Referenced by VN_KEY_HASHVAL::operator()().
Implemented in VN_LITERAL_EXPR, VN_UNARY_EXPR, VN_BINARY_EXPR, VN_TERNARY_EXPR, VN_INTR_OP_EXPR, VN_PHI_EXPR, VN_LDA_ADDR_EXPR, VN_ARRAY_ADDR_EXPR, and VN_MEMLOC_EXPR.
Referenced by VN_KEY_EQ::operator()().
Implemented in VN_LITERAL_EXPR, VN_UNARY_EXPR, VN_BINARY_EXPR, VN_TERNARY_EXPR, VN_INTR_OP_EXPR, VN_PHI_EXPR, VN_LDA_ADDR_EXPR, VN_ARRAY_ADDR_EXPR, and VN_MEMLOC_EXPR.
Referenced by VN::_trace().
MEM_POOL * VN_EXPR::_Mpool = NULL [static, protected] |
Definition at line 267 of file opt_vn_expr.h.
Referenced by VN_LITERAL_EXPR::Create(), VN_ARRAY_ADDR_EXPR::Create(), VN_INTR_OP_EXPR::Create(), VN_LDA_ADDR_EXPR::Create(), VN_BINARY_EXPR::Create(), VN_TERNARY_EXPR::Create(), VN_PHI_EXPR::Create(), VN_MEMLOC_EXPR::Create(), VN_UNARY_EXPR::Create(), VN_INTR_OP_EXPR::free(), VN_PHI_EXPR::free(), VN_ARRAY_ADDR_EXPR::free(), VN_UNARY_EXPR::Init_Free_List(), VN_BINARY_EXPR::Init_Free_List(), VN_TERNARY_EXPR::Init_Free_List(), VN_LITERAL_EXPR::Init_Free_List(), VN_PHI_EXPR::Init_Free_List(), VN_ARRAY_ADDR_EXPR::Init_Free_List(), VN_INTR_OP_EXPR::Init_Free_List(), VN_LDA_ADDR_EXPR::Init_Free_List(), VN_MEMLOC_EXPR::Init_Free_List(), Init_Free_Lists(), VN_INTR_OP_EXPR::Reclaim_Free_List(), VN_TERNARY_EXPR::Reclaim_Free_List(), VN_PHI_EXPR::Reclaim_Free_List(), VN_BINARY_EXPR::Reclaim_Free_List(), VN_MEMLOC_EXPR::Reclaim_Free_List(), VN_LITERAL_EXPR::Reclaim_Free_List(), VN_LDA_ADDR_EXPR::Reclaim_Free_List(), VN_UNARY_EXPR::Reclaim_Free_List(), VN_ARRAY_ADDR_EXPR::Reclaim_Free_List(), Reclaim_Free_Lists(), VN_ARRAY_ADDR_EXPR::VN_ARRAY_ADDR_EXPR(), VN_INTR_OP_EXPR::VN_INTR_OP_EXPR(), and VN_PHI_EXPR::VN_PHI_EXPR().
1.5.6