(root)/
gcc-13.2.0/
gcc/
gimple-array-bounds.h
       1  /* Array bounds checking.
       2     Copyright (C) 2020-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_GIMPLE_ARRAY_BOUNDS_H
      21  #define GCC_GIMPLE_ARRAY_BOUNDS_H
      22  
      23  #include "pointer-query.h"
      24  
      25  class array_bounds_checker
      26  {
      27    friend class check_array_bounds_dom_walker;
      28  
      29  public:
      30    array_bounds_checker (struct function *, range_query *);
      31    void check ();
      32  
      33  private:
      34    static tree check_array_bounds (tree *tp, int *walk_subtree, void *data);
      35    bool check_array_ref (location_t, tree, gimple *, bool ignore_off_by_one);
      36    bool check_mem_ref (location_t, tree, bool ignore_off_by_one);
      37    void check_addr_expr (location_t, tree, gimple *);
      38    const value_range *get_value_range (const_tree op, gimple *);
      39  
      40    /* Current function.  */
      41    struct function *fun;
      42    /* A pointer_query object to store information about pointers and
      43       their targets in.  */
      44    pointer_query m_ptr_qry;
      45    /* Current statement.  */
      46    gimple *m_stmt;
      47  };
      48  
      49  #endif // GCC_GIMPLE_ARRAY_BOUNDS_H