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 )

References a, and 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)

References 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: