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
void record (basic_block bb, relation_kind k, tree ssa1, tree ssa2) override
relation_kind partial_equiv (tree ssa1, tree ssa2, tree *base=NULL) const
relation_kind query (basic_block, tree, tree) override
relation_kind query (basic_block, const_bitmap, const_bitmap) override
void dump (FILE *f, basic_block bb) const override
void dump (FILE *f) const override
void record (gimple *, relation_kind, tree, tree)
void record (edge, relation_kind, tree, tree)
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

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

◆ dump() [1/2]

void equiv_oracle::dump ( FILE * f) const

Reimplemented from relation_oracle.

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

◆ dump() [2/2]

◆ equiv_set()

◆ find_equiv_block()

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

References m_equiv, and NULL.

Referenced by find_equiv_dom().

◆ find_equiv_dom()

◆ has_equiv_p()

bool equiv_oracle::has_equiv_p ( unsigned v)

References bitmap_bit_p, and m_equiv_set.

Referenced by dom_oracle::query().

◆ limit_check()

void equiv_oracle::limit_check ( basic_block bb = NULL)

◆ 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)

Reimplemented from relation_oracle.

References m_partial, NULL, and SSA_NAME_VERSION.

◆ query() [1/4]

relation_kind equiv_oracle::query ( basic_block bb,
const_bitmap e1,
const_bitmap e2 )

Reimplemented from relation_oracle.

References bitmap_equal_p(), VREL_EQ, and VREL_VARYING.

◆ query() [2/4]

relation_kind equiv_oracle::query ( basic_block bb,
tree ssa1,
tree ssa2 )

Reimplemented from relation_oracle.

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

◆ query() [3/4]

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

◆ query() [4/4]

◆ record() [1/3]

◆ record() [2/3]

◆ record() [3/3]

◆ register_equiv() [1/2]

◆ register_equiv() [2/2]

bitmap equiv_oracle::register_equiv ( basic_block bb,
unsigned v,
equiv_chain * equiv_1 )

◆ register_initial_def()

◆ valid_equivs()

void relation_oracle::valid_equivs ( bitmap b,
const_bitmap equivs,
basic_block bb )

Field Documentation

◆ m_bitmaps

◆ m_chain_obstack

struct obstack equiv_oracle::m_chain_obstack

◆ m_equiv

◆ m_equiv_set

bitmap equiv_oracle::m_equiv_set

◆ m_partial

vec<pe_slice> equiv_oracle::m_partial

◆ m_self_equiv

vec<bitmap> equiv_oracle::m_self_equiv

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