(root)/
gcc-13.2.0/
gcc/
tree-ssa-loop-niter.h
       1  /* Header file for loop interation estimates.
       2     Copyright (C) 2013-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 it under
       7  the terms of the GNU General Public License as published by the Free
       8  Software Foundation; either version 3, or (at your option) any later
       9  version.
      10  
      11  GCC is distributed in the hope that it will be useful, but WITHOUT ANY
      12  WARRANTY; without even the implied warranty of MERCHANTABILITY or
      13  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      14   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_SSA_LOOP_NITER_H
      21  #define GCC_TREE_SSA_LOOP_NITER_H
      22  
      23  extern tree expand_simple_operations (tree, tree = NULL);
      24  extern tree simplify_using_initial_conditions (class loop *, tree);
      25  extern bool loop_only_exit_p (const class loop *, basic_block *body,
      26  			      const_edge);
      27  extern bool number_of_iterations_exit (class loop *, edge,
      28  				       class tree_niter_desc *niter, bool,
      29  				       bool every_iteration = true,
      30  				       basic_block * = NULL);
      31  extern bool number_of_iterations_exit_assumptions (class loop *, edge,
      32  						   class tree_niter_desc *,
      33  						   gcond **, bool = true,
      34  						   basic_block * = NULL);
      35  extern tree find_loop_niter (class loop *, edge *);
      36  extern bool finite_loop_p (class loop *);
      37  extern tree loop_niter_by_eval (class loop *, edge);
      38  extern tree find_loop_niter_by_eval (class loop *, edge *);
      39  extern bool estimated_loop_iterations (class loop *, widest_int *);
      40  extern HOST_WIDE_INT estimated_loop_iterations_int (class loop *);
      41  extern bool max_loop_iterations (class loop *, widest_int *);
      42  extern HOST_WIDE_INT max_loop_iterations_int (class loop *);
      43  extern bool likely_max_loop_iterations (class loop *, widest_int *);
      44  extern HOST_WIDE_INT likely_max_loop_iterations_int (class loop *);
      45  extern HOST_WIDE_INT max_stmt_executions_int (class loop *);
      46  extern HOST_WIDE_INT likely_max_stmt_executions_int (class loop *);
      47  extern HOST_WIDE_INT estimated_stmt_executions_int (class loop *);
      48  extern bool max_stmt_executions (class loop *, widest_int *);
      49  extern bool likely_max_stmt_executions (class loop *, widest_int *);
      50  extern bool estimated_stmt_executions (class loop *, widest_int *);
      51  extern void estimate_numbers_of_iterations (function *);
      52  extern void estimate_numbers_of_iterations (class loop *);
      53  extern bool stmt_dominates_stmt_p (gimple *, gimple *);
      54  extern bool nowrap_type_p (tree);
      55  extern bool scev_probably_wraps_p (tree, tree, tree, gimple *,
      56  				   class loop *, bool);
      57  extern void free_numbers_of_iterations_estimates (class loop *);
      58  extern void free_numbers_of_iterations_estimates (function *);
      59  extern tree simplify_replace_tree (tree, tree,
      60  				   tree, tree (*)(tree, void *) = NULL,
      61  				   void * = NULL, bool do_fold = true);
      62  extern void substitute_in_loop_info (class loop *, tree, tree);
      63  
      64  #endif /* GCC_TREE_SSA_LOOP_NITER_H */