Line data Source code
1 : /* Base class for svalues and regions.
2 : Copyright (C) 2023-2026 Free Software Foundation, Inc.
3 : Contributed by David Malcolm <dmalcolm@redhat.com>.
4 :
5 : This file is part of GCC.
6 :
7 : GCC is free software; you can redistribute it and/or modify it
8 : under the terms of the GNU General Public License as published by
9 : the Free Software Foundation; either version 3, or (at your option)
10 : any later version.
11 :
12 : GCC is distributed in the hope that it will be useful, but
13 : WITHOUT ANY WARRANTY; without even the implied warranty of
14 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 : General Public License for more details.
16 :
17 : You should have received a copy of the GNU General Public License
18 : along with GCC; see the file COPYING3. If not see
19 : <http://www.gnu.org/licenses/>. */
20 :
21 : #ifndef GCC_ANALYZER_SYMBOL_H
22 : #define GCC_ANALYZER_SYMBOL_H
23 :
24 : #include "analyzer/complexity.h"
25 :
26 : namespace ana {
27 :
28 : /* Base class for svalues and regions: has a complexity and a numeric ID. */
29 :
30 : class symbol
31 : {
32 : public:
33 : typedef unsigned id_t;
34 :
35 501333 : const complexity &get_complexity () const { return m_complexity; }
36 :
37 66335873 : id_t get_id () const { return m_id; }
38 : static int cmp_ids (const symbol *s1, const symbol *s2);
39 :
40 : protected:
41 402115 : symbol (complexity c, unsigned id)
42 402115 : : m_complexity (c),
43 401911 : m_id (id)
44 : {}
45 :
46 : private:
47 : complexity m_complexity;
48 : id_t m_id; // for deterministic sorting at this stage, for dumps
49 : };
50 :
51 : } // namespace ana
52 :
53 : #endif /* GCC_ANALYZER_SYMBOL_H */
|