GCC Middle and Back End API Reference
gori_compute Class Reference

#include <gimple-range-gori.h>

Inheritance diagram for gori_compute:
Collaboration diagram for gori_compute:

Public Member Functions

 gori_compute (gori_map &map, int not_executable_flag=0, int max_sw_edges=0)
 
virtual ~gori_compute ()
 
bool edge_range_p (vrange &r, edge e, tree name, range_query &q)
 
bool has_edge_range_p (tree name, basic_block bb=NULL)
 
bool has_edge_range_p (tree name, edge e)
 
void dump (FILE *f)
 
bool compute_operand_range (vrange &r, gimple *stmt, const vrange &lhs, tree name, class fur_source &src, value_relation *rel=NULL)
 
gimpleedge_range_p (irange &r, edge e)
 
void set_switch_limit (int max_sw_edges=INT_MAX)
 

Private Member Functions

bool refine_using_relation (tree op1, vrange &op1_range, tree op2, vrange &op2_range, fur_source &src, relation_kind k)
 
bool may_recompute_p (tree name, edge e, int depth=-1)
 
bool may_recompute_p (tree name, basic_block bb=NULL, int depth=-1)
 
bool compute_operand_range_switch (vrange &r, gswitch *s, const vrange &lhs, tree name, fur_source &src)
 
bool compute_operand1_range (vrange &r, gimple_range_op_handler &handler, const vrange &lhs, fur_source &src, value_relation *rel=NULL)
 
bool compute_operand2_range (vrange &r, gimple_range_op_handler &handler, const vrange &lhs, fur_source &src, value_relation *rel=NULL)
 
bool compute_operand1_and_operand2_range (vrange &r, gimple_range_op_handler &handler, const vrange &lhs, tree name, fur_source &src, value_relation *rel=NULL)
 
void compute_logical_operands (vrange &true_range, vrange &false_range, gimple_range_op_handler &handler, const irange &lhs, tree name, fur_source &src, tree op, bool op_in_chain)
 
bool logical_combine (vrange &r, enum tree_code code, const irange &lhs, const vrange &op1_true, const vrange &op1_false, const vrange &op2_true, const vrange &op2_false)
 
void calc_switch_ranges (gswitch *sw)
 
bool switch_edge_range (irange &r, gswitch *sw, edge e)
 

Private Attributes

gori_mapm_map
 
int_range< 2 > m_bool_zero
 
int_range< 2 > m_bool_one
 
range_tracer tracer
 
int m_not_executable_flag
 
int m_max_edges
 
hash_map< edge, vrange_storage * > * m_edge_table
 
class vrange_allocatorm_range_allocator
 

Constructor & Destructor Documentation

◆ gori_compute()

gori_compute::gori_compute ( gori_map & map,
int not_executable_flag = 0,
int max_sw_edges = 0 )

◆ ~gori_compute()

gori_compute::~gori_compute ( )
virtual

Member Function Documentation

◆ calc_switch_ranges()

◆ compute_logical_operands()

◆ compute_operand1_and_operand2_range()

◆ compute_operand1_range()

◆ compute_operand2_range()

◆ compute_operand_range()

◆ compute_operand_range_switch()

bool gori_compute::compute_operand_range_switch ( vrange & r,
gswitch * s,
const vrange & lhs,
tree name,
fur_source & src )
private

◆ dump()

void gori_compute::dump ( FILE * f)
virtual

Reimplemented from gimple_outgoing_range.

References m_map.

◆ edge_range_p() [1/2]

◆ edge_range_p() [2/2]

◆ has_edge_range_p() [1/2]

bool gori_compute::has_edge_range_p ( tree name,
basic_block bb = NULL )
virtual

Reimplemented from gimple_outgoing_range.

References gori_map::is_export_p(), m_map, and may_recompute_p().

Referenced by has_edge_range_p().

◆ has_edge_range_p() [2/2]

bool gori_compute::has_edge_range_p ( tree name,
edge e )
virtual

Reimplemented from gimple_outgoing_range.

References gcc_checking_assert, and has_edge_range_p().

◆ logical_combine()

◆ may_recompute_p() [1/2]

◆ may_recompute_p() [2/2]

bool gori_compute::may_recompute_p ( tree name,
edge e,
int depth = -1 )
private

◆ refine_using_relation()

◆ set_switch_limit()

void gimple_outgoing_range::set_switch_limit ( int max_sw_edges = INT_MAX)
inherited

◆ switch_edge_range()

Field Documentation

◆ m_bool_one

int_range<2> gori_compute::m_bool_one
private

◆ m_bool_zero

int_range<2> gori_compute::m_bool_zero
private

◆ m_edge_table

◆ m_map

◆ m_max_edges

◆ m_not_executable_flag

int gori_compute::m_not_executable_flag
private

Referenced by edge_range_p(), and gori_compute().

◆ m_range_allocator

◆ tracer


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