GCC Middle and Back End API Reference
ana::bounded_ranges_manager Class Reference

#include <constraint-manager.h>

Collaboration diagram for ana::bounded_ranges_manager:

Data Structures

struct  hash_traits_t
 
struct  traits_t
 

Public Member Functions

 ~bounded_ranges_manager ()
 
const bounded_rangesget_or_create_ranges_for_switch (const switch_cfg_superedge *edge, const gswitch *switch_stmt)
 
const bounded_rangesget_or_create_empty ()
 
const bounded_rangesget_or_create_point (const_tree value)
 
const bounded_rangesget_or_create_range (const_tree lower_bound, const_tree upper_bound)
 
const bounded_rangesget_or_create_union (const vec< const bounded_ranges * > &others)
 
const bounded_rangesget_or_create_intersection (const bounded_ranges *a, const bounded_ranges *b)
 
const bounded_rangesget_or_create_inverse (const bounded_ranges *other, tree type)
 
void log_stats (logger *logger, bool show_objs) const
 

Private Types

typedef hash_map< bounded_ranges *, bounded_ranges *, traits_tmap_t
 
typedef hash_map< const switch_cfg_superedge *, const bounded_ranges * > edge_cache_t
 

Private Member Functions

const bounded_rangescreate_ranges_for_switch (const switch_cfg_superedge &edge, const gswitch *switch_stmt)
 
const bounded_rangesmake_case_label_ranges (const gswitch *switch_stmt, tree case_label)
 
const bounded_rangesconsolidate (bounded_ranges *)
 

Private Attributes

map_t m_map
 
edge_cache_t m_edge_cache
 

Detailed Description

An object to own and consolidate bounded_ranges instances.
This also caches the mapping from switch_cfg_superedge
bounded_ranges instances, so that get_or_create_ranges_for_switch is
memoized.   

Member Typedef Documentation

◆ edge_cache_t

◆ map_t

Constructor & Destructor Documentation

◆ ~bounded_ranges_manager()

ana::bounded_ranges_manager::~bounded_ranges_manager ( )

Member Function Documentation

◆ consolidate()

const bounded_ranges * ana::bounded_ranges_manager::consolidate ( bounded_ranges * )
private

◆ create_ranges_for_switch()

const bounded_ranges * ana::bounded_ranges_manager::create_ranges_for_switch ( const switch_cfg_superedge & edge,
const gswitch * switch_stmt )
private

◆ get_or_create_empty()

const bounded_ranges * ana::bounded_ranges_manager::get_or_create_empty ( )

◆ get_or_create_intersection()

const bounded_ranges * ana::bounded_ranges_manager::get_or_create_intersection ( const bounded_ranges * a,
const bounded_ranges * b )

◆ get_or_create_inverse()

const bounded_ranges * ana::bounded_ranges_manager::get_or_create_inverse ( const bounded_ranges * other,
tree type )

◆ get_or_create_point()

const bounded_ranges * ana::bounded_ranges_manager::get_or_create_point ( const_tree value)

◆ get_or_create_range()

const bounded_ranges * ana::bounded_ranges_manager::get_or_create_range ( const_tree lower_bound,
const_tree upper_bound )

◆ get_or_create_ranges_for_switch()

const bounded_ranges * ana::bounded_ranges_manager::get_or_create_ranges_for_switch ( const switch_cfg_superedge * edge,
const gswitch * switch_stmt )

◆ get_or_create_union()

const bounded_ranges * ana::bounded_ranges_manager::get_or_create_union ( const vec< const bounded_ranges * > & others)

◆ log_stats()

void ana::bounded_ranges_manager::log_stats ( logger * logger,
bool show_objs ) const

◆ make_case_label_ranges()

const bounded_ranges * ana::bounded_ranges_manager::make_case_label_ranges ( const gswitch * switch_stmt,
tree case_label )
private

Field Documentation

◆ m_edge_cache

edge_cache_t ana::bounded_ranges_manager::m_edge_cache
private

◆ m_map

map_t ana::bounded_ranges_manager::m_map
private

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