11debfc3dSmrg /* Header file for loop interation estimates. 2*8feb0f0bSmrg Copyright (C) 2013-2020 Free Software Foundation, Inc. 31debfc3dSmrg 41debfc3dSmrg This file is part of GCC. 51debfc3dSmrg 61debfc3dSmrg GCC is free software; you can redistribute it and/or modify it under 71debfc3dSmrg the terms of the GNU General Public License as published by the Free 81debfc3dSmrg Software Foundation; either version 3, or (at your option) any later 91debfc3dSmrg version. 101debfc3dSmrg 111debfc3dSmrg GCC is distributed in the hope that it will be useful, but WITHOUT ANY 121debfc3dSmrg WARRANTY; without even the implied warranty of MERCHANTABILITY or 131debfc3dSmrg FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 141debfc3dSmrg for more details. 151debfc3dSmrg 161debfc3dSmrg You should have received a copy of the GNU General Public License 171debfc3dSmrg along with GCC; see the file COPYING3. If not see 181debfc3dSmrg <http://www.gnu.org/licenses/>. */ 191debfc3dSmrg 201debfc3dSmrg #ifndef GCC_TREE_SSA_LOOP_NITER_H 211debfc3dSmrg #define GCC_TREE_SSA_LOOP_NITER_H 221debfc3dSmrg 231debfc3dSmrg extern tree expand_simple_operations (tree, tree = NULL); 24*8feb0f0bSmrg extern tree simplify_using_initial_conditions (class loop *, tree); 25*8feb0f0bSmrg extern bool loop_only_exit_p (const class loop *, basic_block *body, 26*8feb0f0bSmrg const_edge); 27*8feb0f0bSmrg extern bool number_of_iterations_exit (class loop *, edge, 28*8feb0f0bSmrg class tree_niter_desc *niter, bool, 29*8feb0f0bSmrg bool every_iteration = true, 30*8feb0f0bSmrg basic_block * = NULL); 31*8feb0f0bSmrg extern bool number_of_iterations_exit_assumptions (class loop *, edge, 32*8feb0f0bSmrg class tree_niter_desc *, 33*8feb0f0bSmrg gcond **, bool = true, 34*8feb0f0bSmrg basic_block * = NULL); 35*8feb0f0bSmrg extern tree find_loop_niter (class loop *, edge *); 36*8feb0f0bSmrg extern bool finite_loop_p (class loop *); 37*8feb0f0bSmrg extern tree loop_niter_by_eval (class loop *, edge); 38*8feb0f0bSmrg extern tree find_loop_niter_by_eval (class loop *, edge *); 39*8feb0f0bSmrg extern bool estimated_loop_iterations (class loop *, widest_int *); 40*8feb0f0bSmrg extern HOST_WIDE_INT estimated_loop_iterations_int (class loop *); 41*8feb0f0bSmrg extern bool max_loop_iterations (class loop *, widest_int *); 42*8feb0f0bSmrg extern HOST_WIDE_INT max_loop_iterations_int (class loop *); 43*8feb0f0bSmrg extern bool likely_max_loop_iterations (class loop *, widest_int *); 44*8feb0f0bSmrg extern HOST_WIDE_INT likely_max_loop_iterations_int (class loop *); 45*8feb0f0bSmrg extern HOST_WIDE_INT max_stmt_executions_int (class loop *); 46*8feb0f0bSmrg extern HOST_WIDE_INT likely_max_stmt_executions_int (class loop *); 47*8feb0f0bSmrg extern HOST_WIDE_INT estimated_stmt_executions_int (class loop *); 48*8feb0f0bSmrg extern bool max_stmt_executions (class loop *, widest_int *); 49*8feb0f0bSmrg extern bool likely_max_stmt_executions (class loop *, widest_int *); 50*8feb0f0bSmrg extern bool estimated_stmt_executions (class loop *, widest_int *); 51a2dc1f3fSmrg extern void estimate_numbers_of_iterations (function *); 52*8feb0f0bSmrg extern void estimate_numbers_of_iterations (class loop *); 531debfc3dSmrg extern bool stmt_dominates_stmt_p (gimple *, gimple *); 541debfc3dSmrg extern bool nowrap_type_p (tree); 551debfc3dSmrg extern bool scev_probably_wraps_p (tree, tree, tree, gimple *, 56*8feb0f0bSmrg class loop *, bool); 57*8feb0f0bSmrg extern void free_numbers_of_iterations_estimates (class loop *); 581debfc3dSmrg extern void free_numbers_of_iterations_estimates (function *); 59*8feb0f0bSmrg extern tree simplify_replace_tree (tree, tree, 60*8feb0f0bSmrg tree, tree (*)(tree, void *) = NULL, 61*8feb0f0bSmrg void * = NULL, bool do_fold = true); 62*8feb0f0bSmrg extern void substitute_in_loop_info (class loop *, tree, tree); 631debfc3dSmrg 641debfc3dSmrg #endif /* GCC_TREE_SSA_LOOP_NITER_H */ 65