GCC Middle and Back End API Reference
ranges.h
Go to the documentation of this file.
1/* Symbolic offsets and ranges.
2 Copyright (C) 2023-2024 Free Software Foundation, Inc.
3 Contributed by David Malcolm <dmalcolm@redhat.com>.
4
5This file is part of GCC.
6
7GCC is free software; you can redistribute it and/or modify it
8under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 3, or (at your option)
10any later version.
11
12GCC is distributed in the hope that it will be useful, but
13WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GCC; see the file COPYING3. If not see
19<http://www.gnu.org/licenses/>. */
20
21#ifndef GCC_ANALYZER_RANGES_H
22#define GCC_ANALYZER_RANGES_H
23
24namespace ana {
25
26/* Wrapper around an svalue for a value measured in bytes. */
27
29{
30public:
35
36 const svalue *get_svalue () const { return m_num_bytes_sval; }
38
39 void dump_to_pp (pretty_printer *pp, bool) const;
40 void dump (bool) const;
41
43
44 bool operator== (const symbolic_byte_offset &other) const
45 {
46 return m_num_bytes_sval == other.m_num_bytes_sval;
47 }
48
49private:
51};
52
53/* A range of byte offsets, where both the start and size of the
54 range can be symbolic. */
55
97
98} // namespace ana
99
100#endif /* GCC_ANALYZER_RANGES_H */
Definition region-model-manager.h:32
Definition region-model.h:258
Definition analyzer.h:192
Definition svalue.h:90
Definition ranges.h:29
const svalue * get_svalue() const
Definition ranges.h:36
const svalue * m_num_bytes_sval
Definition ranges.h:50
symbolic_byte_offset(region_offset offset, region_model_manager &mgr)
void dump_to_pp(pretty_printer *pp, bool) const
symbolic_byte_offset(int i, region_model_manager &mgr)
bool operator==(const symbolic_byte_offset &other) const
Definition ranges.h:44
void dump(bool) const
tree maybe_get_constant() const
symbolic_byte_offset(const svalue *num_bytes_sval)
json::value * to_json() const
Definition ranges.h:57
symbolic_byte_offset get_last_byte_offset(region_model_manager &mgr) const
symbolic_byte_offset m_size
Definition ranges.h:95
json::value * to_json() const
symbolic_byte_range(symbolic_byte_offset start, symbolic_byte_offset size)
Definition ranges.h:59
tristate intersection(const symbolic_byte_range &other, const region_model &model) const
void dump(bool, region_model_manager &mgr) const
void dump_to_pp(pretty_printer *pp, bool simple, region_model_manager &mgr) const
symbolic_byte_offset m_start
Definition ranges.h:94
symbolic_byte_range(region_offset start, const svalue *num_bytes, region_model_manager &mgr)
symbolic_byte_offset get_size_in_bytes() const
Definition ranges.h:84
symbolic_byte_offset get_next_byte_offset(region_model_manager &mgr) const
symbolic_byte_offset get_start_byte_offset() const
Definition ranges.h:79
Definition json.h:79
Definition pretty-print.h:244
Definition tristate.h:26
union tree_node * tree
Definition coretypes.h:97
T * ggc_alloc(ALONE_CXX_MEM_STAT_INFO)
Definition ggc.h:184
Definition access-diagram.h:30
i
Definition poly-int.h:772
rtx offset
Definition postreload.cc:691