1  /* Support routines for Value Range Propagation (VRP).
       2     Copyright (C) 2016-2023 Free Software Foundation, Inc.
       3  
       4  This file is part of GCC.
       5  
       6  GCC is free software; you can redistribute it and/or modify
       7  it under the terms of the GNU General Public License as published by
       8  the Free Software Foundation; either version 3, or (at your option)
       9  any later version.
      10  
      11  GCC is distributed in the hope that it will be useful,
      12  but WITHOUT ANY WARRANTY; without even the implied warranty of
      13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14  GNU General Public License for more details.
      15  
      16  You should have received a copy of the GNU General Public License
      17  along with GCC; see the file COPYING3.  If not see
      18  <http://www.gnu.org/licenses/>.  */
      19  
      20  #ifndef GCC_TREE_VRP_H
      21  #define GCC_TREE_VRP_H
      22  
      23  #include "value-range.h"
      24  
      25  extern bool range_int_cst_p (const value_range *);
      26  
      27  extern int compare_values (tree, tree);
      28  extern int compare_values_warnv (tree, tree, bool *);
      29  extern int operand_less_p (tree, tree);
      30  
      31  void range_fold_unary_expr (value_range *, enum tree_code, tree type,
      32  			    const value_range *, tree op0_type);
      33  void range_fold_binary_expr (value_range *, enum tree_code, tree type,
      34  			     const value_range *, const value_range *);
      35  
      36  extern enum value_range_kind intersect_range_with_nonzero_bits
      37    (enum value_range_kind, wide_int *, wide_int *, const wide_int &, signop);
      38  
      39  extern bool find_case_label_range (gswitch *, tree, tree, size_t *, size_t *);
      40  extern tree find_case_label_range (gswitch *, const irange *vr);
      41  extern bool find_case_label_index (gswitch *, size_t, tree, size_t *);
      42  extern bool overflow_comparison_p (tree_code, tree, tree, tree *);
      43  extern void maybe_set_nonzero_bits (edge, tree);
      44  
      45  #endif /* GCC_TREE_VRP_H */