GCC Middle and Back End API Reference
dom_ranger Class Reference

#include <gimple-range.h>

Inheritance diagram for dom_ranger:
Collaboration diagram for dom_ranger:

Public Member Functions

 dom_ranger ()
 
 ~dom_ranger ()
 
virtual bool range_of_expr (vrange &r, tree expr, gimple *s=NULL) override
 
virtual bool range_on_edge (vrange &r, edge e, tree expr) override
 
virtual bool range_of_stmt (vrange &r, gimple *s, tree name=NULL) override
 
bool edge_range (vrange &r, edge e, tree name)
 
void range_in_bb (vrange &r, basic_block bb, tree name)
 
void pre_bb (basic_block bb)
 
void post_bb (basic_block bb)
 
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_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
 
virtual void dump (FILE *)
 

Protected Member Functions

 DISABLE_COPY_AND_ASSIGN (dom_ranger)
 
void maybe_push_edge (edge e, bool edge_0)
 
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

ssa_cache m_global
 
gimple_outgoing_range m_out
 
vec< ssa_lazy_cache * > m_freelist
 
vec< ssa_lazy_cache * > m_e0
 
vec< ssa_lazy_cache * > m_e1
 
bitmap m_pop_list
 
range_tracer tracer
 
relation_oraclem_oracle
 

Constructor & Destructor Documentation

◆ dom_ranger()

◆ ~dom_ranger()

Member Function Documentation

◆ DISABLE_COPY_AND_ASSIGN()

dom_ranger::DISABLE_COPY_AND_ASSIGN ( dom_ranger )
protected

◆ dump()

void range_query::dump ( FILE * )
virtualinherited

◆ edge_range()

◆ get_arith_expr_range()

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

◆ 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

◆ maybe_push_edge()

void dom_ranger::maybe_push_edge ( edge e,
bool edge_0 )
protected

References ggc_alloc(), gori_on_edge(), m_e0, m_e1, m_freelist, and m_out.

Referenced by pre_bb().

◆ oracle()

◆ post_bb()

void dom_ranger::post_bb ( basic_block bb)

◆ pre_bb()

◆ query_relation() [1/2]

◆ query_relation() [2/2]

◆ range_in_bb()

◆ range_of_expr()

◆ range_of_stmt()

◆ range_on_edge()

bool dom_ranger::range_on_edge ( vrange & r,
edge ,
tree expr )
overridevirtual
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 dump_file, edge_range(), fputc(), range_query::get_tree_range(), ggc_alloc(), gimple_range_ssa_p(), range_tracer::header(), NULL, print_generic_expr(), r, range_in_bb(), TDF_SLIM, tracer, and range_tracer::trailer().

◆ 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

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

vec<ssa_lazy_cache *> dom_ranger::m_e0
protected

◆ m_e1

vec<ssa_lazy_cache *> dom_ranger::m_e1
protected

◆ m_freelist

vec<ssa_lazy_cache *> dom_ranger::m_freelist
protected

◆ m_global

ssa_cache dom_ranger::m_global
protected

◆ m_oracle

◆ m_out

gimple_outgoing_range dom_ranger::m_out
protected

Referenced by maybe_push_edge().

◆ m_pop_list

bitmap dom_ranger::m_pop_list
protected

Referenced by dom_ranger(), and ~dom_ranger().

◆ tracer

range_tracer dom_ranger::tracer
protected

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