GCC Middle and Back End API Reference
equiv_oracle Class Reference

#include <value-relation.h>

Inheritance diagram for equiv_oracle:
Collaboration diagram for equiv_oracle:

Public Member Functions

 equiv_oracle ()
 
 ~equiv_oracle ()
 
const_bitmap equiv_set (tree ssa, basic_block bb) final override
 
const pe_slicepartial_equiv_set (tree name) final override
 
void register_relation (basic_block bb, relation_kind k, tree ssa1, tree ssa2) override
 
void add_partial_equiv (relation_kind, tree, tree)
 
relation_kind partial_equiv (tree ssa1, tree ssa2, tree *base=NULL) const
 
relation_kind query_relation (basic_block, tree, tree) override
 
relation_kind query_relation (basic_block, const_bitmap, const_bitmap) override
 
void dump (FILE *f, basic_block bb) const override
 
void dump (FILE *f) const override
 
void register_stmt (gimple *, relation_kind, tree, tree)
 
void register_edge (edge, relation_kind, tree, tree)
 
relation_kind validate_relation (relation_kind, tree, tree)
 
relation_kind validate_relation (relation_kind, vrange &, vrange &)
 
void debug () const
 

Protected Member Functions

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

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

bitmap m_equiv_set
 
vec< equiv_chain * > m_equiv
 
vec< bitmapm_self_equiv
 
vec< pe_slicem_partial
 

Constructor & Destructor Documentation

◆ equiv_oracle()

◆ ~equiv_oracle()

equiv_oracle::~equiv_oracle ( )

Member Function Documentation

◆ add_equiv_to_block()

◆ add_partial_equiv()

◆ debug()

void relation_oracle::debug ( ) const
inherited

◆ dump() [1/2]

void equiv_oracle::dump ( FILE * f) const
overridevirtual

◆ dump() [2/2]

◆ equiv_set()

◆ find_equiv_block()

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

References m_equiv, and NULL.

Referenced by find_equiv_dom().

◆ find_equiv_dom()

◆ has_equiv_p()

bool equiv_oracle::has_equiv_p ( unsigned v)
inlineprotected

References bitmap_bit_p, and m_equiv_set.

Referenced by dom_oracle::query_relation().

◆ limit_check()

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

◆ partial_equiv()

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

◆ partial_equiv_set()

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

Reimplemented from relation_oracle.

References m_partial, NULL, and SSA_NAME_VERSION.

◆ query_relation() [1/2]

relation_kind equiv_oracle::query_relation ( basic_block bb,
const_bitmap e1,
const_bitmap e2 )
overridevirtual

Implements relation_oracle.

References bitmap_equal_p(), VREL_EQ, and VREL_VARYING.

◆ query_relation() [2/2]

relation_kind equiv_oracle::query_relation ( basic_block bb,
tree ssa1,
tree ssa2 )
overridevirtual

Implements relation_oracle.

References equiv_set(), partial_equiv(), and VREL_EQ.

◆ register_edge()

◆ register_equiv() [1/2]

◆ register_equiv() [2/2]

◆ register_initial_def()

◆ register_relation()

◆ register_stmt()

◆ valid_equivs()

◆ validate_relation() [1/2]

relation_kind relation_oracle::validate_relation ( relation_kind rel,
tree ssa1,
tree ssa2 )
inherited

◆ validate_relation() [2/2]

Field Documentation

◆ m_bitmaps

◆ m_chain_obstack

struct obstack equiv_oracle::m_chain_obstack
protected

◆ m_equiv

◆ m_equiv_set

◆ m_partial

vec<pe_slice> equiv_oracle::m_partial
private

◆ m_self_equiv

vec<bitmap> equiv_oracle::m_self_equiv
private

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