GCC Middle and Back End API Reference
dom_oracle Class Reference

#include <value-relation.h>

Inheritance diagram for dom_oracle:
Collaboration diagram for dom_oracle:

Public Member Functions

 dom_oracle (bool do_trans_p=true)
 
 ~dom_oracle ()
 
void record (basic_block bb, relation_kind k, tree op1, tree op2) final override
 
relation_kind query (basic_block bb, tree ssa1, tree ssa2) final override
 
relation_kind query (basic_block bb, const_bitmap b1, const_bitmap b2) final override
 
void dump (FILE *f, basic_block bb) const final override
 
void dump (FILE *f) const final override
 
const_bitmap equiv_set (tree ssa, basic_block bb) final override
 
void record (gimple *, relation_kind, tree, tree)
 
void record (edge, relation_kind, tree, tree)
 
relation_kind partial_equiv (tree ssa1, tree ssa2, tree *base=NULL) const
 
relation_kind query (gimple *s, tree ssa1, tree ssa2)
 
relation_kind query (edge e, tree ssa1, tree ssa2)
 
void debug () const
 

Protected Member Functions

void add_partial_equiv (relation_kind, tree, tree)
 
const pe_slicepartial_equiv_set (tree name) final override
 
bool has_equiv_p (unsigned v)
 
void valid_equivs (bitmap b, const_bitmap equivs, basic_block bb)
 

Protected Attributes

bitmap_obstack m_bitmaps
 
struct obstack m_chain_obstack
 

Private Member Functions

relation_kind find_relation_block (unsigned bb, const_bitmap b1, const_bitmap b2) const
 
relation_kind find_relation_block (int bb, unsigned v1, unsigned v2, relation_chain **obj=NULL) const
 
relation_kind find_relation_dom (basic_block bb, unsigned v1, unsigned v2) const
 
relation_chainset_one_relation (basic_block bb, relation_kind k, tree op1, tree op2)
 
void register_transitives (basic_block, const class value_relation &)
 
void limit_check (basic_block bb=NULL)
 
equiv_chainfind_equiv_block (unsigned ssa, int bb) const
 
equiv_chainfind_equiv_dom (tree name, basic_block bb) const
 
bitmap register_equiv (basic_block bb, unsigned v, equiv_chain *equiv_1)
 
bitmap register_equiv (basic_block bb, equiv_chain *equiv_1, equiv_chain *equiv_2)
 
void register_initial_def (tree ssa)
 
void add_equiv_to_block (basic_block bb, bitmap equiv)
 

Private Attributes

bool m_do_trans_p
 
bitmap m_tmp
 
bitmap m_tmp2
 
bitmap m_relation_set
 
vec< relation_chain_headm_relations
 
bitmap m_equiv_set
 
vec< equiv_chain * > m_equiv
 
vec< bitmapm_self_equiv
 
vec< pe_slicem_partial
 

Constructor & Destructor Documentation

◆ dom_oracle()

◆ ~dom_oracle()

dom_oracle::~dom_oracle ( )

References m_relations.

Member Function Documentation

◆ add_equiv_to_block()

◆ add_partial_equiv()

◆ debug()

void relation_oracle::debug ( ) const
inherited

◆ dump() [1/2]

void dom_oracle::dump ( FILE * f) const
finaloverridevirtual

Reimplemented from relation_oracle.

References BASIC_BLOCK_FOR_FN, cfun, dump(), i, and m_relations.

◆ dump() [2/2]

void dom_oracle::dump ( FILE * f,
basic_block bb ) const
finaloverridevirtual

◆ equiv_set()

◆ find_equiv_block()

equiv_chain * equiv_oracle::find_equiv_block ( unsigned ssa,
int bb ) const
privateinherited

◆ find_equiv_dom()

◆ find_relation_block() [1/2]

relation_kind dom_oracle::find_relation_block ( int bb,
unsigned v1,
unsigned v2,
relation_chain ** obj = NULL ) const
private

◆ find_relation_block() [2/2]

relation_kind dom_oracle::find_relation_block ( unsigned bb,
const_bitmap b1,
const_bitmap b2 ) const
private

◆ find_relation_dom()

relation_kind dom_oracle::find_relation_dom ( basic_block bb,
unsigned v1,
unsigned v2 ) const
private

◆ has_equiv_p()

bool equiv_oracle::has_equiv_p ( unsigned v)
inlineprotectedinherited

References bitmap_bit_p, and equiv_oracle::m_equiv_set.

Referenced by query().

◆ limit_check()

void equiv_oracle::limit_check ( basic_block bb = NULL)
privateinherited

◆ partial_equiv()

relation_kind equiv_oracle::partial_equiv ( tree ssa1,
tree ssa2,
tree * base = NULL ) const
inherited

◆ partial_equiv_set()

const pe_slice * equiv_oracle::partial_equiv_set ( tree name)
finaloverrideprotectedvirtualinherited

Reimplemented from relation_oracle.

References equiv_oracle::m_partial, NULL, and SSA_NAME_VERSION.

◆ query() [1/4]

◆ query() [2/4]

◆ query() [3/4]

relation_kind relation_oracle::query ( edge e,
tree ssa1,
tree ssa2 )
inherited

◆ query() [4/4]

◆ record() [1/3]

◆ record() [2/3]

◆ record() [3/3]

◆ register_equiv() [1/2]

◆ register_equiv() [2/2]

◆ register_initial_def()

◆ register_transitives()

◆ set_one_relation()

◆ valid_equivs()

Field Documentation

◆ m_bitmaps

◆ m_chain_obstack

struct obstack equiv_oracle::m_chain_obstack
protectedinherited

◆ m_do_trans_p

bool dom_oracle::m_do_trans_p
private

Referenced by dom_oracle(), and register_transitives().

◆ m_equiv

◆ m_equiv_set

◆ m_partial

◆ m_relation_set

bitmap dom_oracle::m_relation_set
private

◆ m_relations

◆ m_self_equiv

vec<bitmap> equiv_oracle::m_self_equiv
privateinherited

◆ m_tmp

bitmap dom_oracle::m_tmp
private

Referenced by dom_oracle().

◆ m_tmp2

bitmap dom_oracle::m_tmp2
private

Referenced by dom_oracle().


The documentation for this class was generated from the following files: