GCC Middle and Back End API Reference
gimple_range_op_handler Class Reference

#include <gimple-range-op.h>

Inheritance diagram for gimple_range_op_handler:
Collaboration diagram for gimple_range_op_handler:

Public Member Functions

 gimple_range_op_handler (gimple *s)
 
gimplestmt () const
 
tree lhs () const
 
tree operand1 () const
 
tree operand2 () const
 
bool calc_op1 (vrange &r, const vrange &lhs_range)
 
bool calc_op1 (vrange &r, const vrange &lhs_range, const vrange &op2_range, relation_trio=TRIO_VARYING)
 
bool calc_op2 (vrange &r, const vrange &lhs_range, const vrange &op1_range, relation_trio=TRIO_VARYING)
 
 operator bool () const
 
range_operatorrange_op () const
 
bool fold_range (vrange &r, tree type, const vrange &lh, const vrange &rh, relation_trio=TRIO_VARYING) const
 
bool op1_range (vrange &r, tree type, const vrange &lhs, const vrange &op2, relation_trio=TRIO_VARYING) const
 
bool op2_range (vrange &r, tree type, const vrange &lhs, const vrange &op1, relation_trio=TRIO_VARYING) const
 
relation_kind lhs_op1_relation (const vrange &lhs, const vrange &op1, const vrange &op2, relation_kind=VREL_VARYING) const
 
relation_kind lhs_op2_relation (const vrange &lhs, const vrange &op1, const vrange &op2, relation_kind=VREL_VARYING) const
 
relation_kind op1_op2_relation (const vrange &lhs, const vrange &op1, const vrange &op2) const
 
bool overflow_free_p (const vrange &lh, const vrange &rh, relation_trio=TRIO_VARYING) const
 
bool operand_check_p (tree, tree, tree) const
 

Static Public Member Functions

static bool supported_p (gimple *s)
 

Protected Member Functions

unsigned dispatch_kind (const vrange &lhs, const vrange &op1, const vrange &op2) const
 
void discriminator_fail (const vrange &, const vrange &, const vrange &) const
 

Protected Attributes

range_operatorm_operator
 

Private Member Functions

void maybe_builtin_call ()
 
void maybe_non_standard ()
 

Private Attributes

gimplem_stmt
 
tree m_op1
 
tree m_op2
 

Detailed Description

Header file for the GIMPLE range-op interface.
   Copyright (C) 2022-2024 Free Software Foundation, Inc.
   Contributed by Andrew MacLeod <amacleod@redhat.com>
   and Aldy Hernandez <aldyh@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/>.   

Constructor & Destructor Documentation

◆ gimple_range_op_handler()

gimple_range_op_handler::gimple_range_op_handler ( gimple * s)

References get_code(), and m_stmt.

Member Function Documentation

◆ calc_op1() [1/2]

bool gimple_range_op_handler::calc_op1 ( vrange & r,
const vrange & lhs_range )

◆ calc_op1() [2/2]

◆ calc_op2()

bool gimple_range_op_handler::calc_op2 ( vrange & r,
const vrange & lhs_range,
const vrange & op1_range,
relation_trio k = TRIO_VARYING )

◆ discriminator_fail()

void range_op_handler::discriminator_fail ( const vrange & r1,
const vrange & r2,
const vrange & r3 ) const
protectedinherited

◆ dispatch_kind()

◆ fold_range()

◆ lhs()

◆ lhs_op1_relation()

◆ lhs_op2_relation()

◆ maybe_builtin_call()

◆ maybe_non_standard()

◆ op1_op2_relation()

◆ op1_range()

bool range_op_handler::op1_range ( vrange & r,
tree type,
const vrange & lhs,
const vrange & op2,
relation_trio rel = TRIO_VARYING ) const
inherited

◆ op2_range()

◆ operand1()

◆ operand2()

◆ operand_check_p()

bool range_op_handler::operand_check_p ( tree t1,
tree t2,
tree t3 ) const
inherited

◆ operator bool()

range_op_handler::operator bool ( ) const
inherited

References default_operator.

◆ overflow_free_p()

bool range_op_handler::overflow_free_p ( const vrange & lh,
const vrange & rh,
relation_trio rel = TRIO_VARYING ) const
inherited

◆ range_op()

range_operator * range_op_handler::range_op ( ) const
inherited

◆ stmt()

◆ supported_p()

bool gimple_range_op_handler::supported_p ( gimple * s)
static

Field Documentation

◆ m_op1

tree gimple_range_op_handler::m_op1
private

◆ m_op2

tree gimple_range_op_handler::m_op2
private

◆ m_operator

◆ m_stmt

gimple* gimple_range_op_handler::m_stmt
private

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