GCC Middle and Back End API Reference
ranger_cache Class Reference

#include <gimple-range-cache.h>

Inheritance diagram for ranger_cache:
Collaboration diagram for ranger_cache:

Public Member Functions

 ranger_cache (int not_executable_flag, bool use_imm_uses)
 
 ~ranger_cache ()
 
bool range_of_expr (vrange &r, tree name, gimple *stmt) final override
 
bool range_on_edge (vrange &r, edge e, tree expr) final override
 
bool block_range (vrange &r, basic_block bb, tree name, bool calc=true)
 
bool get_global_range (vrange &r, tree name) const
 
bool get_global_range (vrange &r, tree name, bool &current_p)
 
void set_global_range (tree name, const vrange &r, bool changed=true)
 
range_queryconst_query ()
 
void propagate_updated_value (tree name, basic_block bb)
 
void register_inferred_value (const vrange &r, tree name, basic_block bb)
 
void apply_inferred_ranges (gimple *s)
 
void dump_bb (FILE *f, basic_block bb)
 
virtual void dump (FILE *f) override
 
virtual tree value_of_expr (tree expr, gimple *=NULL)
 
virtual tree value_on_edge (edge, tree expr)
 
virtual tree value_of_stmt (gimple *, tree name=NULL)
 
virtual tree value_on_entry (basic_block, tree expr)
 
virtual tree value_on_exit (basic_block, tree expr)
 
virtual bool range_of_stmt (vrange &r, gimple *, tree name=NULL)
 
virtual bool range_on_entry (vrange &r, basic_block bb, tree expr)
 
virtual bool range_on_exit (vrange &r, basic_block bb, tree expr)
 
relation_kind query_relation (gimple *s, tree ssa1, tree ssa2, bool get_range=true)
 
relation_kind query_relation (edge e, tree ssa1, tree ssa2, bool get_range=true)
 
relation_oracleoracle () const
 

Data Fields

gori_compute m_gori
 
infer_range_manager m_exit
 

Protected Member Functions

bool get_tree_range (vrange &v, tree expr, gimple *stmt, basic_block bbentry=NULL, basic_block bbexit=NULL)
 
bool invoke_range_of_expr (vrange &v, tree expr, gimple *stmt, basic_block bbentry, basic_block bbexit)
 
bool get_arith_expr_range (vrange &r, tree expr, gimple *stmt)
 

Protected Attributes

relation_oraclem_oracle
 

Private Types

enum  rfd_mode { RFD_NONE , RFD_READ_ONLY , RFD_FILL }
 

Private Member Functions

void fill_block_cache (tree name, basic_block bb, basic_block def_bb)
 
void propagate_cache (tree name)
 
bool range_from_dom (vrange &r, tree name, basic_block bb, enum rfd_mode)
 
void resolve_dom (vrange &r, tree name, basic_block bb)
 
void range_of_def (vrange &r, tree name, basic_block bb=NULL)
 
void entry_range (vrange &r, tree expr, basic_block bb, enum rfd_mode)
 
void exit_range (vrange &r, tree expr, basic_block bb, enum rfd_mode)
 
bool edge_range (vrange &r, edge e, tree name, enum rfd_mode)
 

Private Attributes

ssa_cache m_globals
 
block_range_cache m_on_entry
 
class temporal_cachem_temporal
 
vec< basic_blockm_workback
 
class update_listm_update
 

Member Enumeration Documentation

◆ rfd_mode

Enumerator
RFD_NONE 
RFD_READ_ONLY 
RFD_FILL 

Constructor & Destructor Documentation

◆ ranger_cache()

◆ ~ranger_cache()

ranger_cache::~ranger_cache ( )

Member Function Documentation

◆ apply_inferred_ranges()

◆ block_range()

◆ const_query()

range_query & ranger_cache::const_query ( )
inline

References m_globals.

Referenced by gimple_ranger::const_query().

◆ dump()

void ranger_cache::dump ( FILE * f)
overridevirtual

Reimplemented from range_query.

References ssa_cache::dump(), ggc_alloc(), and m_globals.

Referenced by gimple_ranger::dump().

◆ dump_bb()

◆ edge_range()

◆ entry_range()

◆ exit_range()

◆ fill_block_cache()

◆ get_arith_expr_range()

bool range_query::get_arith_expr_range ( vrange & r,
tree expr,
gimple * stmt )
protectedinherited

◆ get_global_range() [1/2]

◆ get_global_range() [2/2]

◆ get_tree_range()

◆ invoke_range_of_expr()

bool range_query::invoke_range_of_expr ( vrange & v,
tree expr,
gimple * stmt,
basic_block bbentry,
basic_block bbexit )
protectedinherited

◆ oracle()

◆ propagate_cache()

◆ propagate_updated_value()

◆ query_relation() [1/2]

◆ query_relation() [2/2]

◆ range_from_dom()

◆ range_of_def()

◆ range_of_expr()

bool ranger_cache::range_of_expr ( vrange & r,
tree name,
gimple * stmt )
finaloverridevirtual

◆ range_of_stmt()

bool range_query::range_of_stmt ( vrange & r,
gimple * stmt,
tree name = NULL )
virtualinherited

◆ range_on_edge()

bool ranger_cache::range_on_edge ( vrange & r,
edge ,
tree expr )
finaloverridevirtual
Support routines for value queries.
   Copyright (C) 2020-2024 Free Software Foundation, Inc.
   Contributed by Aldy Hernandez <aldyh@redhat.com> and
   Andrew MacLeod <amacleod@redhat.com>.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.

GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.   

Reimplemented from range_query.

References edge_range(), range_query::get_tree_range(), gimple_range_ssa_p(), NULL, r, and RFD_NONE.

Referenced by gimple_ranger::dump_bb(), and gimple_ranger::range_on_edge().

◆ range_on_entry()

bool range_query::range_on_entry ( vrange & r,
basic_block bb,
tree expr )
virtualinherited

◆ range_on_exit()

bool range_query::range_on_exit ( vrange & r,
basic_block bb,
tree expr )
virtualinherited

◆ register_inferred_value()

◆ resolve_dom()

◆ set_global_range()

◆ value_of_expr()

tree range_query::value_of_expr ( tree expr,
gimple * stmt = NULL )
virtualinherited

◆ value_of_stmt()

◆ value_on_edge()

◆ value_on_entry()

tree range_query::value_on_entry ( basic_block bb,
tree expr )
virtualinherited

◆ value_on_exit()

tree range_query::value_on_exit ( basic_block bb,
tree expr )
virtualinherited

Field Documentation

◆ m_exit

◆ m_globals

ssa_cache ranger_cache::m_globals
private

◆ m_gori

◆ m_on_entry

◆ m_oracle

◆ m_temporal

class temporal_cache* ranger_cache::m_temporal
private

◆ m_update

◆ m_workback

vec<basic_block> ranger_cache::m_workback
private

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