GCC Middle and Back End API Reference
range-op-mixed.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  operator_equal
 
class  operator_not_equal
 
class  operator_lt
 
class  operator_le
 
class  operator_gt
 
class  operator_ge
 
class  operator_identity
 
class  operator_cst
 
class  operator_cast
 
class  operator_plus
 
class  operator_abs
 
class  operator_minus
 
class  operator_negate
 
class  cross_product_operator
 
class  operator_mult
 
class  operator_addr_expr
 
class  operator_bitwise_not
 
class  operator_bitwise_xor
 
class  operator_bitwise_and
 
class  operator_bitwise_or
 
class  operator_min
 
class  operator_max
 

Enumerations

enum  bool_range_state { BRS_FALSE , BRS_TRUE , BRS_EMPTY , BRS_FULL }
 

Functions

void update_known_bitmask (vrange &, tree_code, const vrange &, const vrange &)
 
bool minus_op1_op2_relation_effect (irange &lhs_range, tree type, const irange &, const irange &, relation_kind rel)
 
bool wi_includes_zero_p (tree type, const wide_int &wmin, const wide_int &wmax)
 
bool wi_zero_p (tree type, const wide_int &wmin, const wide_int &wmax)
 
bool_range_state get_bool_state (vrange &r, const vrange &lhs, tree val_type)
 
bool empty_range_varying (vrange &r, tree type, const vrange &op1, const vrange &op2)
 
bool relop_early_resolve (irange &r, tree type, const vrange &op1, const vrange &op2, relation_trio trio, relation_kind my_rel)
 

Enumeration Type Documentation

◆ bool_range_state

Enumerator
BRS_FALSE 
BRS_TRUE 
BRS_EMPTY 
BRS_FULL 

Function Documentation

◆ empty_range_varying()

◆ get_bool_state()

bool_range_state get_bool_state ( vrange & r,
const vrange & lhs,
tree val_type )

References BRS_EMPTY, BRS_FALSE, BRS_FULL, BRS_TRUE, build_zero_cst(), vrange::contains_p(), r, vrange::type(), vrange::undefined_p(), and vrange::zero_p().

Referenced by foperator_ltgt::op1_range(), foperator_ordered::op1_range(), foperator_unordered::op1_range(), foperator_unordered_equal::op1_range(), foperator_unordered_ge::op1_range(), foperator_unordered_gt::op1_range(), foperator_unordered_le::op1_range(), foperator_unordered_lt::op1_range(), operator_bitwise_xor::op1_range(), operator_equal::op1_range(), operator_equal::op1_range(), operator_equal::op1_range(), operator_ge::op1_range(), operator_ge::op1_range(), operator_ge::op1_range(), operator_gt::op1_range(), operator_gt::op1_range(), operator_gt::op1_range(), operator_le::op1_range(), operator_le::op1_range(), operator_le::op1_range(), operator_logical_and::op1_range(), operator_logical_or::op1_range(), operator_lt::op1_range(), operator_lt::op1_range(), operator_lt::op1_range(), operator_not_equal::op1_range(), operator_not_equal::op1_range(), operator_not_equal::op1_range(), foperator_unordered_ge::op2_range(), foperator_unordered_gt::op2_range(), foperator_unordered_le::op2_range(), foperator_unordered_lt::op2_range(), operator_ge::op2_range(), operator_ge::op2_range(), operator_ge::op2_range(), operator_gt::op2_range(), operator_gt::op2_range(), operator_gt::op2_range(), operator_le::op2_range(), operator_le::op2_range(), operator_le::op2_range(), operator_lt::op2_range(), operator_lt::op2_range(), and operator_lt::op2_range().

◆ minus_op1_op2_relation_effect()

◆ relop_early_resolve()

◆ update_known_bitmask()

void update_known_bitmask ( vrange & r,
tree_code code,
const vrange & lh,
const vrange & rh )
Header file for mixed range operator class.
   Copyright (C) 2017-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/>.   

References bit_value_binop(), bit_value_unop(), wide_int_storage::from(), gcc_unreachable, vrange::get_bitmask(), get_gimple_rhs_class(), GIMPLE_BINARY_RHS, GIMPLE_UNARY_RHS, irange_bitmask::mask(), r, vrange::type(), TYPE_PRECISION, TYPE_SIGN, vrange::undefined_p(), and irange_bitmask::value().

Referenced by operator_bitwise_and::fold_range(), operator_max::fold_range(), operator_min::fold_range(), pointer_plus_operator::fold_range(), operator_abs::update_bitmask(), operator_absu::update_bitmask(), operator_bitwise_and::update_bitmask(), operator_bitwise_not::update_bitmask(), operator_bitwise_or::update_bitmask(), operator_bitwise_xor::update_bitmask(), operator_cast::update_bitmask(), operator_div::update_bitmask(), operator_equal::update_bitmask(), operator_ge::update_bitmask(), operator_gt::update_bitmask(), operator_le::update_bitmask(), operator_lshift::update_bitmask(), operator_lt::update_bitmask(), operator_max::update_bitmask(), operator_min::update_bitmask(), operator_minus::update_bitmask(), operator_mult::update_bitmask(), operator_not_equal::update_bitmask(), operator_plus::update_bitmask(), operator_pointer_diff::update_bitmask(), operator_pointer_diff::update_bitmask(), operator_rshift::update_bitmask(), operator_trunc_mod::update_bitmask(), and pointer_plus_operator::update_bitmask().

◆ wi_includes_zero_p()

◆ wi_zero_p()