No functional change intended.

gcc/ChangeLog:
        * Makefile.in (ANALYZER_OBJS): Replace analyzer/symbol.o with
        analyzer/symbolic-nodes.o.

gcc/analyzer/ChangeLog:
        * common.h (class symbolic::node): New forward decl.
        * complexity.cc: Update comment.
        * complexity.h: Likewise.
        * kf.cc: Update for renaming of
        region_model_manager::alloc_symbol_id to
        region_model_manager::alloc_node_id.
        * region-model-manager.cc: Update for renaming of
        region_model_manager::alloc_symbol_id to
        region_model_manager::alloc_node_id, and m_next_symbol_id to
        m_next_node_id.
        * region-model-manager.h (region_model_manager::get_num_symbols):
        Rename to...
        (region_model_manager::get_num_nodes): ...this.
        (region_model_manager::alloc_symbol_id): Rename to...
        (region_model_manager::alloc_node_id): ...this.
        (region_model_manager::m_next_symbol_id): Rename to...
        (region_model_manager::m_next_node_id): ...this.
        * region-model.cc: Update for renaming of
        region_model_manager::alloc_symbol_id to
        region_model_manager::alloc_node_id.
        * region.cc: Likewise.  Rename "symbol" to "symbolic::node"
        throughout.
        * region.h: Likewise.  Replace include of "analyzer/symbol.h" with
        "analyzer/symbolic-nodes.h".
        * svalue.cc: Likewise.
        * svalue.h: Likewise.
        * symbol.cc: Rename to...
        * symbolic-nodes.cc: .. .this.  Replace include of
        "analyzer/symbol.h" with "analyzer/symbolic-nodes.h".  Rename
        "symbol" to "symbolic::node" throughout.
        * symbol.h: Rename to...
        * symbolic-nodes.h: ...this, updating include guards.
        (class symbol): Rename to...
        (symbolic::node): ...this.  Flesh out leading comment somewhat.
        Modernize "id_t" to Use "using" rather than "typedef".  Add
        virtual dtor.

Signed-off-by: David Malcolm <[email protected]>
---
 gcc/Makefile.in                               |  2 +-
 gcc/analyzer/common.h                         |  5 +
 gcc/analyzer/complexity.cc                    |  2 +-
 gcc/analyzer/complexity.h                     |  6 +-
 gcc/analyzer/kf.cc                            |  2 +-
 gcc/analyzer/region-model-manager.cc          | 92 +++++++++----------
 gcc/analyzer/region-model-manager.h           |  6 +-
 gcc/analyzer/region-model.cc                  | 14 +--
 gcc/analyzer/region.cc                        | 10 +-
 gcc/analyzer/region.h                         | 54 +++++------
 gcc/analyzer/svalue.cc                        | 38 ++++----
 gcc/analyzer/svalue.h                         | 46 +++++-----
 gcc/analyzer/{symbol.cc => symbolic-nodes.cc} |  8 +-
 gcc/analyzer/{symbol.h => symbolic-nodes.h}   | 27 ++++--
 14 files changed, 164 insertions(+), 148 deletions(-)
 rename gcc/analyzer/{symbol.cc => symbolic-nodes.cc} (82%)
 rename gcc/analyzer/{symbol.h => symbolic-nodes.h} (63%)

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 962debed442..38460282f43 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1407,7 +1407,7 @@ ANALYZER_OBJS = \
        analyzer/supergraph-simplify.o \
        analyzer/supergraph-sorting.o \
        analyzer/svalue.o \
-       analyzer/symbol.o \
+       analyzer/symbolic-nodes.o \
        analyzer/trimmed-graph.o \
        analyzer/varargs.o \
        analyzer/write-to-const-diagnostics.o \
diff --git a/gcc/analyzer/common.h b/gcc/analyzer/common.h
index 3ffcebd69c0..04abf1dd0ff 100644
--- a/gcc/analyzer/common.h
+++ b/gcc/analyzer/common.h
@@ -54,6 +54,11 @@ class supergraph;
 class supernode;
 class superedge;
 
+namespace symbolic
+{
+  class node;
+}
+
 class svalue;
   class region_svalue;
   class constant_svalue;
diff --git a/gcc/analyzer/complexity.cc b/gcc/analyzer/complexity.cc
index c00b52048e3..f77b3a1a3f2 100644
--- a/gcc/analyzer/complexity.cc
+++ b/gcc/analyzer/complexity.cc
@@ -1,4 +1,4 @@
-/* Measuring the complexity of svalues/regions.
+/* Measuring the complexity of symbolic nodes.
    Copyright (C) 2020-2026 Free Software Foundation, Inc.
    Contributed by David Malcolm <[email protected]>.
 
diff --git a/gcc/analyzer/complexity.h b/gcc/analyzer/complexity.h
index dc5790ed6cd..41a241f4659 100644
--- a/gcc/analyzer/complexity.h
+++ b/gcc/analyzer/complexity.h
@@ -1,4 +1,4 @@
-/* Measuring the complexity of svalues/regions.
+/* Measuring the complexity of symbolic nodes.
    Copyright (C) 2020-2026 Free Software Foundation, Inc.
    Contributed by David Malcolm <[email protected]>.
 
@@ -23,7 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 
 namespace ana {
 
-/* A measurement of the complexity of an svalue or region, so that
+/* A measurement of the complexity of a symbolic node, so that
    we can impose bounds on the growth of these tree-like structures
    and thus avoid infinite chains of analysis.  */
 
@@ -38,7 +38,7 @@ struct complexity
   static complexity from_pair (const complexity &c1, const complexity &c);
   static complexity from_vec_svalue (const vec<const svalue *> &vec);
 
-  /* The total number of svalues and regions in the tree of this
+  /* The total number of nodes in the tree of this
      entity, including the entity itself.  */
   unsigned m_num_nodes;
 
diff --git a/gcc/analyzer/kf.cc b/gcc/analyzer/kf.cc
index a9f69d03987..89bcce8d0fb 100644
--- a/gcc/analyzer/kf.cc
+++ b/gcc/analyzer/kf.cc
@@ -2795,7 +2795,7 @@ public:
   }; // class strtok_call_info
 
   kf_strtok (region_model_manager &mgr)
-  : m_private_reg (mgr.alloc_symbol_id (),
+  : m_private_reg (mgr.alloc_node_id (),
                   mgr.get_root_region (),
                   get_region_type (),
                   "strtok buffer")
diff --git a/gcc/analyzer/region-model-manager.cc 
b/gcc/analyzer/region-model-manager.cc
index 8899a4c8dcb..fd5d91c8ee4 100644
--- a/gcc/analyzer/region-model-manager.cc
+++ b/gcc/analyzer/region-model-manager.cc
@@ -44,20 +44,20 @@ namespace ana {
 
 region_model_manager::region_model_manager (logger *logger)
 : m_logger (logger),
-  m_next_symbol_id (0),
+  m_next_node_id (0),
   m_empty_call_string (),
-  m_root_region (alloc_symbol_id ()),
-  m_stack_region (alloc_symbol_id (), &m_root_region),
-  m_heap_region (alloc_symbol_id (), &m_root_region),
+  m_root_region (alloc_node_id ()),
+  m_stack_region (alloc_node_id (), &m_root_region),
+  m_heap_region (alloc_node_id (), &m_root_region),
   m_unknown_NULL (nullptr),
   m_checking_feasibility (false),
   m_max_complexity (0, 0),
-  m_code_region (alloc_symbol_id (), &m_root_region),
+  m_code_region (alloc_node_id (), &m_root_region),
   m_fndecls_map (), m_labels_map (),
-  m_globals_region (alloc_symbol_id (), &m_root_region),
+  m_globals_region (alloc_node_id (), &m_root_region),
   m_globals_map (),
-  m_thread_local_region (alloc_symbol_id (), &m_root_region),
-  m_errno_region (alloc_symbol_id (), &m_thread_local_region),
+  m_thread_local_region (alloc_node_id (), &m_root_region),
+  m_errno_region (alloc_node_id (), &m_thread_local_region),
   m_store_mgr (this),
   m_range_mgr (new bounded_ranges_manager ()),
   m_known_fn_mgr (logger)
@@ -215,7 +215,7 @@ region_model_manager::get_or_create_constant_svalue (tree 
type, tree cst_expr)
   if (iter != m_constants_map.end ())
     return iter->second;
   constant_svalue *cst_sval
-    = new constant_svalue (alloc_symbol_id (), type, cst_expr);
+    = new constant_svalue (alloc_node_id (), type, cst_expr);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (cst_sval);
   m_constants_map.insert ({key, cst_sval});
   return cst_sval;
@@ -277,14 +277,14 @@ region_model_manager::get_or_create_unknown_svalue (tree 
type)
   if (type == NULL_TREE)
     {
       if (!m_unknown_NULL)
-       m_unknown_NULL = new unknown_svalue (alloc_symbol_id (), type);
+       m_unknown_NULL = new unknown_svalue (alloc_node_id (), type);
       return m_unknown_NULL;
     }
 
   auto iter = m_unknowns_map.find (type);
   if (iter != m_unknowns_map.end ())
     return iter->second;
-  unknown_svalue *sval = new unknown_svalue (alloc_symbol_id (), type);
+  unknown_svalue *sval = new unknown_svalue (alloc_node_id (), type);
   m_unknowns_map.insert ({type, sval});
   return sval;
 }
@@ -294,7 +294,7 @@ region_model_manager::get_or_create_unknown_svalue (tree 
type)
 const svalue *
 region_model_manager::create_unique_svalue (tree type)
 {
-  svalue *sval = new placeholder_svalue (alloc_symbol_id (), type, "unique");
+  svalue *sval = new placeholder_svalue (alloc_node_id (), type, "unique");
   m_managed_dynamic_svalues.safe_push (sval);
   return sval;
 }
@@ -345,7 +345,7 @@ region_model_manager::get_or_create_initial_value (const 
region *reg,
   if (iter != m_initial_values_map.end ())
     return iter->second;
   initial_svalue *initial_sval
-    = new initial_svalue (alloc_symbol_id (), reg->get_type (), reg);
+    = new initial_svalue (alloc_node_id (), reg->get_type (), reg);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (initial_sval);
   m_initial_values_map.insert ({reg, initial_sval});
   return initial_sval;
@@ -362,7 +362,7 @@ region_model_manager::get_or_create_setjmp_svalue (const 
setjmp_record &r,
   auto iter = m_setjmp_values_map.find (key);
   if (iter != m_setjmp_values_map.end ())
     return iter->second;
-  setjmp_svalue *setjmp_sval = new setjmp_svalue (r, alloc_symbol_id (), type);
+  setjmp_svalue *setjmp_sval = new setjmp_svalue (r, alloc_node_id (), type);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (setjmp_sval);
   m_setjmp_values_map.insert ({key, setjmp_sval});
   return setjmp_sval;
@@ -380,7 +380,7 @@ region_model_manager::get_or_create_poisoned_svalue (enum 
poison_kind kind,
   if (iter != m_poisoned_values_map.end ())
     return iter->second;
   poisoned_svalue *poisoned_sval
-    = new poisoned_svalue (kind, alloc_symbol_id (), type);
+    = new poisoned_svalue (kind, alloc_node_id (), type);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (poisoned_sval);
   m_poisoned_values_map.insert ( {key, poisoned_sval} );
   return poisoned_sval;
@@ -403,7 +403,7 @@ region_model_manager::get_ptr_svalue (tree ptr_type, const 
region *pointee)
   if (iter != m_pointer_values_map.end ())
     return iter->second;
   region_svalue *sval
-    = new region_svalue (alloc_symbol_id (), ptr_type, pointee);
+    = new region_svalue (alloc_node_id (), ptr_type, pointee);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (sval);
   m_pointer_values_map.insert ({key, sval});
   return sval;
@@ -568,7 +568,7 @@ region_model_manager::get_or_create_unaryop (tree type, 
enum tree_code op,
   if (iter != m_unaryop_values_map.end ())
     return iter->second;
   unaryop_svalue *unaryop_sval
-    = new unaryop_svalue (alloc_symbol_id (), type, op, arg);
+    = new unaryop_svalue (alloc_node_id (), type, op, arg);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (unaryop_sval);
   m_unaryop_values_map.insert ({key, unaryop_sval});
   return unaryop_sval;
@@ -1001,7 +1001,7 @@ region_model_manager::get_or_create_binop (tree type, 
enum tree_code op,
   if (iter != m_binop_values_map.end ())
     return iter->second;
   binop_svalue *binop_sval
-    = new binop_svalue (alloc_symbol_id (), type, op, arg0, arg1);
+    = new binop_svalue (alloc_node_id (), type, op, arg0, arg1);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (binop_sval);
   m_binop_values_map.insert ({key, binop_sval});
   return binop_sval;
@@ -1115,7 +1115,7 @@ region_model_manager::get_or_create_sub_svalue (tree type,
   if (iter != m_sub_values_map.end ())
     return iter->second;
   sub_svalue *sub_sval
-    = new sub_svalue (alloc_symbol_id (), type, parent_svalue, subregion);
+    = new sub_svalue (alloc_node_id (), type, parent_svalue, subregion);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (sub_sval);
   m_sub_values_map.insert ({key, sub_sval});
   return sub_sval;
@@ -1178,7 +1178,7 @@ region_model_manager::get_or_create_repeated_svalue (tree 
type,
   if (iter != m_repeated_values_map.end ())
     return iter->second;
   repeated_svalue *repeated_sval
-    = new repeated_svalue (alloc_symbol_id (), type, outer_size, inner_svalue);
+    = new repeated_svalue (alloc_node_id (), type, outer_size, inner_svalue);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (repeated_sval);
   m_repeated_values_map.insert ({key, repeated_sval});
   return repeated_sval;
@@ -1372,7 +1372,7 @@ region_model_manager::get_or_create_bits_within (tree 
type,
   if (iter != m_bits_within_values_map.end ())
     return iter->second;
   bits_within_svalue *bits_within_sval
-    = new bits_within_svalue (alloc_symbol_id (), type, bits, inner_svalue);
+    = new bits_within_svalue (alloc_node_id (), type, bits, inner_svalue);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (bits_within_sval);
   m_bits_within_values_map.insert ({key, bits_within_sval});
   return bits_within_sval;
@@ -1391,7 +1391,7 @@ region_model_manager::get_or_create_unmergeable (const 
svalue *arg)
   if (iter != m_unmergeable_values_map.end ())
     return iter->second;
   unmergeable_svalue *unmergeable_sval
-    = new unmergeable_svalue (alloc_symbol_id (), arg);
+    = new unmergeable_svalue (alloc_node_id (), arg);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (unmergeable_sval);
   m_unmergeable_values_map.insert ({arg, unmergeable_sval});
   return unmergeable_sval;
@@ -1414,7 +1414,7 @@ get_or_create_widening_svalue (tree type,
   if (iter != m_widening_values_map.end ())
     return iter->second;
   widening_svalue *widening_sval
-    = new widening_svalue (alloc_symbol_id (), type, snode, base_sval,
+    = new widening_svalue (alloc_node_id (), type, snode, base_sval,
                           iter_sval);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (widening_sval);
   m_widening_values_map.insert ({key, widening_sval});
@@ -1433,7 +1433,7 @@ region_model_manager::get_or_create_compound_svalue (tree 
type,
   if (iter != m_compound_values_map.end ())
     return iter->second;
   compound_svalue *compound_sval
-    = new compound_svalue (alloc_symbol_id (), type, std::move (map));
+    = new compound_svalue (alloc_node_id (), type, std::move (map));
   RETURN_UNKNOWN_IF_TOO_COMPLEX (compound_sval);
   /* Use make_key rather than reusing the key, so that we use a
      ptr to compound_sval's binding_map, rather than the MAP param.  */
@@ -1453,7 +1453,7 @@ region_model_manager::get_or_create_compound_svalue (tree 
type,
   if (iter != m_compound_values_map.end ())
     return iter->second;
   compound_svalue *compound_sval
-    = new compound_svalue (alloc_symbol_id (), type, map);
+    = new compound_svalue (alloc_node_id (), type, map);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (compound_sval);
   /* Use make_key rather than reusing the key, so that we use a
      ptr to compound_sval's binding_map, rather than the MAP param.  */
@@ -1497,7 +1497,7 @@ region_model_manager::get_or_create_conjured_svalue (tree 
type,
       return sval;
     }
   conjured_svalue *conjured_sval
-    = new conjured_svalue (alloc_symbol_id (), type, stmt, id_reg, idx);
+    = new conjured_svalue (alloc_node_id (), type, stmt, id_reg, idx);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (conjured_sval);
   m_conjured_values_map.insert ({key, conjured_sval});
   return conjured_sval;
@@ -1543,7 +1543,7 @@ get_or_create_asm_output_svalue (tree type,
   if (iter != m_asm_output_values_map.end ())
     return iter->second;
   asm_output_svalue *asm_output_sval
-    = new asm_output_svalue (alloc_symbol_id (), type, asm_string, output_idx,
+    = new asm_output_svalue (alloc_node_id (), type, asm_string, output_idx,
                             noutputs, inputs);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (asm_output_sval);
   m_asm_output_values_map.insert ({key, asm_output_sval});
@@ -1573,7 +1573,7 @@ get_or_create_asm_output_svalue (tree type,
   if (iter != m_asm_output_values_map.end ())
     return iter->second;
   asm_output_svalue *asm_output_sval
-    = new asm_output_svalue (alloc_symbol_id (), type, asm_string, output_idx,
+    = new asm_output_svalue (alloc_node_id (), type, asm_string, output_idx,
                             num_outputs, inputs);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (asm_output_sval);
   m_asm_output_values_map.insert ({key, asm_output_sval});
@@ -1599,7 +1599,7 @@ get_or_create_const_fn_result_svalue (tree type,
   if (iter != m_const_fn_result_values_map.end ())
     return iter->second;
   const_fn_result_svalue *const_fn_result_sval
-    = new const_fn_result_svalue (alloc_symbol_id (), type, fndecl, inputs);
+    = new const_fn_result_svalue (alloc_node_id (), type, fndecl, inputs);
   RETURN_UNKNOWN_IF_TOO_COMPLEX (const_fn_result_sval);
   m_const_fn_result_values_map.insert ({key, const_fn_result_sval});
   return const_fn_result_sval;
@@ -1708,7 +1708,7 @@ region_model_manager::get_region_for_fndecl (tree fndecl)
   if (iter != m_fndecls_map.end ())
     return iter->second;
   function_region *reg
-    = new function_region (alloc_symbol_id (), &m_code_region, fndecl);
+    = new function_region (alloc_node_id (), &m_code_region, fndecl);
   m_fndecls_map.insert ({fndecl, reg});
   return reg;
 }
@@ -1729,7 +1729,7 @@ region_model_manager::get_region_for_label (tree label)
 
   const function_region *func_reg = get_region_for_fndecl (fndecl);
   label_region *reg
-    = new label_region (alloc_symbol_id (), func_reg, label);
+    = new label_region (alloc_node_id (), func_reg, label);
   m_labels_map.insert ({label, reg});
   return reg;
 }
@@ -1746,7 +1746,7 @@ region_model_manager::get_region_for_global (tree expr)
     return iter->second;
 
   decl_region *reg
-    = new decl_region (alloc_symbol_id (), &m_globals_region, expr);
+    = new decl_region (alloc_node_id (), &m_globals_region, expr);
   m_globals_map.insert ({expr, reg});
   return reg;
 }
@@ -1783,7 +1783,7 @@ region_model_manager::get_field_region (const region 
*parent, tree field)
     return reg;
 
   field_region *field_reg
-    = new field_region (alloc_symbol_id (), parent, field);
+    = new field_region (alloc_node_id (), parent, field);
   m_field_regions.put (key, field_reg);
   return field_reg;
 }
@@ -1805,7 +1805,7 @@ region_model_manager::get_element_region (const region 
*parent,
     return reg;
 
   element_region *element_reg
-    = new element_region (alloc_symbol_id (), parent, element_type, index);
+    = new element_region (alloc_node_id (), parent, element_type, index);
   m_element_regions.put (key, element_reg);
   return element_reg;
 }
@@ -1845,7 +1845,7 @@ region_model_manager::get_offset_region (const region 
*parent,
     return reg;
 
   offset_region *offset_reg
-    = new offset_region (alloc_symbol_id (), parent, type, byte_offset);
+    = new offset_region (alloc_node_id (), parent, type, byte_offset);
   m_offset_regions.put (key, offset_reg);
   return offset_reg;
 }
@@ -1880,7 +1880,7 @@ region_model_manager::get_sized_region (const region 
*parent,
     return reg;
 
   sized_region *sized_reg
-    = new sized_region (alloc_symbol_id (), parent, type, byte_size_sval);
+    = new sized_region (alloc_node_id (), parent, type, byte_size_sval);
   m_sized_regions.put (key, sized_reg);
   return sized_reg;
 }
@@ -1904,7 +1904,7 @@ region_model_manager::get_cast_region (const region 
*original_region,
     return reg;
 
   cast_region *cast_reg
-    = new cast_region (alloc_symbol_id (), original_region, type);
+    = new cast_region (alloc_node_id (), original_region, type);
   m_cast_regions.put (key, cast_reg);
   return cast_reg;
 }
@@ -1923,7 +1923,7 @@ region_model_manager::get_frame_region (const 
frame_region *calling_frame,
     return reg;
 
   frame_region *frame_reg
-    = new frame_region (alloc_symbol_id (), &m_stack_region, calling_frame,
+    = new frame_region (alloc_node_id (), &m_stack_region, calling_frame,
                         fun, index);
   m_frame_regions.put (key, frame_reg);
   return frame_reg;
@@ -1940,7 +1940,7 @@ region_model_manager::get_symbolic_region (const svalue 
*sval)
     return reg;
 
   symbolic_region *symbolic_reg
-    = new symbolic_region (alloc_symbol_id (), &m_root_region, sval);
+    = new symbolic_region (alloc_node_id (), &m_root_region, sval);
   m_symbolic_regions.put (key, symbolic_reg);
   return symbolic_reg;
 }
@@ -1958,7 +1958,7 @@ region_model_manager::get_region_for_string (tree 
string_cst)
     return iter->second;
 
   string_region *reg
-    = new string_region (alloc_symbol_id (), &m_root_region, string_cst);
+    = new string_region (alloc_node_id (), &m_root_region, string_cst);
   m_string_map.insert ({string_cst, reg});
   return reg;
 }
@@ -1980,7 +1980,7 @@ region_model_manager::get_bit_range (const region 
*parent, tree type,
     return reg;
 
   bit_range_region *bit_range_reg
-    = new bit_range_region (alloc_symbol_id (), parent, type, bits);
+    = new bit_range_region (alloc_node_id (), parent, type, bits);
   m_bit_range_regions.put (key, bit_range_reg);
   return bit_range_reg;
 }
@@ -1999,7 +1999,7 @@ region_model_manager::get_var_arg_region (const 
frame_region *parent_frame,
     return reg;
 
   var_arg_region *var_arg_reg
-    = new var_arg_region (alloc_symbol_id (), parent_frame, idx);
+    = new var_arg_region (alloc_node_id (), parent_frame, idx);
   m_var_arg_regions.put (key, var_arg_reg);
   return var_arg_reg;
 }
@@ -2019,7 +2019,7 @@ get_region_for_unexpected_tree_code (region_model_context 
*ctxt,
 {
   tree type = TYPE_P (t) ? t : TREE_TYPE (t);
   region *new_reg
-    = new unknown_region (alloc_symbol_id (), &m_root_region, type);
+    = new unknown_region (alloc_node_id (), &m_root_region, type);
   if (ctxt)
     ctxt->on_unexpected_tree_code (t, loc);
   return new_reg;
@@ -2042,7 +2042,7 @@ get_or_create_region_for_heap_alloc (const bitmap 
&base_regs_in_use)
 
   /* All existing ones (if any) are in use; create a new one.  */
   region *reg
-    = new heap_allocated_region (alloc_symbol_id (), &m_heap_region);
+    = new heap_allocated_region (alloc_node_id (), &m_heap_region);
   m_managed_dynamic_regions.safe_push (reg);
   return reg;
 }
@@ -2053,7 +2053,7 @@ const region *
 region_model_manager::create_region_for_alloca (const frame_region *frame)
 {
   gcc_assert (frame);
-  region *reg = new alloca_region (alloc_symbol_id (), frame);
+  region *reg = new alloca_region (alloc_node_id (), frame);
   m_managed_dynamic_regions.safe_push (reg);
   return reg;
 }
@@ -2158,7 +2158,7 @@ region_model_manager::log_stats (logger *logger, bool 
show_objs) const
   LOG_SCOPE (logger);
   logger->log ("call string consolidation");
   m_empty_call_string.recursive_log (logger);
-  logger->log ("next symbol id: %i", m_next_symbol_id);
+  logger->log ("next node id: %i", m_next_node_id);
   logger->log ("svalue consolidation");
   log_uniq_map (logger, show_objs, "constant_svalue", m_constants_map);
   log_uniq_map (logger, show_objs, "unknown_svalue", m_unknowns_map);
diff --git a/gcc/analyzer/region-model-manager.h 
b/gcc/analyzer/region-model-manager.h
index 6e3e38e57c9..6e6cbe74700 100644
--- a/gcc/analyzer/region-model-manager.h
+++ b/gcc/analyzer/region-model-manager.h
@@ -34,8 +34,8 @@ public:
   region_model_manager (logger *logger = nullptr);
   ~region_model_manager ();
 
-  unsigned get_num_symbols () const { return m_next_symbol_id; }
-  unsigned alloc_symbol_id () { return m_next_symbol_id++; }
+  unsigned get_num_nodes () const { return m_next_node_id; }
+  unsigned alloc_node_id () { return m_next_node_id++; }
 
   /* call_string consolidation.  */
   const call_string &get_empty_call_string () const
@@ -205,7 +205,7 @@ private:
 
   logger *m_logger;
 
-  unsigned m_next_symbol_id;
+  unsigned m_next_node_id;
 
   const call_string m_empty_call_string;
 
diff --git a/gcc/analyzer/region-model.cc b/gcc/analyzer/region-model.cc
index 361b0607347..60e80a9e69e 100644
--- a/gcc/analyzer/region-model.cc
+++ b/gcc/analyzer/region-model.cc
@@ -7895,7 +7895,7 @@ test_get_representative_tree ()
     tree tlen = size_int (10);
     tree arr_type = build_array_type (char_type_node, build_index_type (tlen));
     tree a = build_global_decl ("a", arr_type);
-    placeholder_svalue test_sval (mgr.alloc_symbol_id (),
+    placeholder_svalue test_sval (mgr.alloc_node_id (),
                                  char_type_node, "test value");
 
     /* Value of a[3].  */
@@ -7941,7 +7941,7 @@ test_get_representative_tree ()
     {
       region_model m (&mgr);
       const region *c_x_reg = m.get_lvalue (c_x, &ctxt);
-      placeholder_svalue test_sval_x (mgr.alloc_symbol_id (),
+      placeholder_svalue test_sval_x (mgr.alloc_node_id (),
                                      integer_type_node, "test x val");
       m.set_value (c_x_reg, &test_sval_x, &ctxt);
       tree rep = m.get_representative_tree (&test_sval_x);
@@ -7952,7 +7952,7 @@ test_get_representative_tree ()
     {
       region_model m (&mgr);
       const region *c_y_reg = m.get_lvalue (c_y, &ctxt);
-      placeholder_svalue test_sval_y (mgr.alloc_symbol_id (),
+      placeholder_svalue test_sval_y (mgr.alloc_node_id (),
                                      integer_type_node, "test y val");
       m.set_value (c_y_reg, &test_sval_y, &ctxt);
       tree rep = m.get_representative_tree (&test_sval_y);
@@ -8197,7 +8197,7 @@ test_binop_svalue_folding ()
     const svalue *sval_false = mgr.get_or_create_int_cst (boolean_type_node, 
0);
     const svalue *sval_unknown
       = mgr.get_or_create_unknown_svalue (boolean_type_node);
-    const placeholder_svalue sval_placeholder (mgr.alloc_symbol_id (),
+    const placeholder_svalue sval_placeholder (mgr.alloc_node_id (),
                                               boolean_type_node, "v");
     for (auto op : {BIT_IOR_EXPR, TRUTH_OR_EXPR})
       {
@@ -8816,7 +8816,7 @@ test_state_merging ()
     model1.push_frame (*DECL_STRUCT_FUNCTION (test_fndecl),
                       nullptr, nullptr, &ctxt);
 
-    placeholder_svalue test_sval (mgr.alloc_symbol_id (),
+    placeholder_svalue test_sval (mgr.alloc_node_id (),
                                  integer_type_node, "test sval");
     model0.set_value (model0.get_lvalue (a, &ctxt), &test_sval, &ctxt);
     model1.set_value (model1.get_lvalue (a, &ctxt), &test_sval, &ctxt);
@@ -8836,7 +8836,7 @@ test_state_merging ()
     region_model model0 (&mgr);
     region_model model1 (&mgr);
 
-    placeholder_svalue test_sval (mgr.alloc_symbol_id (),
+    placeholder_svalue test_sval (mgr.alloc_node_id (),
                                  integer_type_node, "test sval");
     model0.set_value (model0.get_lvalue (x, &ctxt), &test_sval, &ctxt);
     model1.set_value (model1.get_lvalue (x, &ctxt), &test_sval, &ctxt);
@@ -8984,7 +8984,7 @@ test_state_merging ()
   {
     test_region_model_context ctxt;
     region_model model0 (&mgr);
-    placeholder_svalue placeholder_sval (mgr.alloc_symbol_id (),
+    placeholder_svalue placeholder_sval (mgr.alloc_node_id (),
                                         integer_type_node, "test");
     model0.set_value (model0.get_lvalue (x, &ctxt),
                      &placeholder_sval, &ctxt);
diff --git a/gcc/analyzer/region.cc b/gcc/analyzer/region.cc
index 6f9e49468cd..4bb96119c93 100644
--- a/gcc/analyzer/region.cc
+++ b/gcc/analyzer/region.cc
@@ -1275,8 +1275,8 @@ region::is_named_decl_p (const char *decl_name) const
 
 /* region's ctor.  */
 
-region::region (complexity c, symbol::id_t id, const region *parent, tree type)
-: symbol (c, id),
+region::region (complexity c, symbolic::node::id_t id, const region *parent, 
tree type)
+: symbolic::node (c, id),
   m_parent (parent), m_type (type),
   m_cached_offset (nullptr), m_cached_init_sval_at_main (nullptr)
 {
@@ -1534,7 +1534,7 @@ frame_region::get_region_for_local (region_model_manager 
*mgr,
   if (decl_region **slot = mutable_locals.get (expr))
     return *slot;
   decl_region *reg
-    = new decl_region (mgr->alloc_symbol_id (), this, expr);
+    = new decl_region (mgr->alloc_node_id (), this, expr);
   mutable_locals.put (expr, reg);
   return reg;
 }
@@ -1673,7 +1673,7 @@ heap_region::print_dump_widget_label (pretty_printer *pp) 
const
 
 /* root_region's ctor.  */
 
-root_region::root_region (symbol::id_t id)
+root_region::root_region (symbolic::node::id_t id)
 : region (complexity (1, 1), id, nullptr, NULL_TREE)
 {
 }
@@ -1716,7 +1716,7 @@ thread_local_region::print_dump_widget_label 
(pretty_printer *pp) const
 
 /* symbolic_region's ctor.  */
 
-symbolic_region::symbolic_region (symbol::id_t id, region *parent,
+symbolic_region::symbolic_region (symbolic::node::id_t id, region *parent,
                                  const svalue *sval_ptr)
 : region (complexity::from_pair (parent, sval_ptr), id, parent,
          (sval_ptr->get_type ()
diff --git a/gcc/analyzer/region.h b/gcc/analyzer/region.h
index c852f7f51af..3ead50a418c 100644
--- a/gcc/analyzer/region.h
+++ b/gcc/analyzer/region.h
@@ -21,7 +21,7 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef GCC_ANALYZER_REGION_H
 #define GCC_ANALYZER_REGION_H
 
-#include "analyzer/symbol.h"
+#include "analyzer/symbolic-nodes.h"
 #include "analyzer/store.h"
 #include "text-art/tree-widget.h"
 
@@ -123,7 +123,7 @@ enum region_kind
    within the frames and the "globals" region.  Regions for structs
    can have subregions for fields.  */
 
-class region : public symbol
+class region : public symbolic::node
 {
 public:
   virtual ~region ();
@@ -259,7 +259,7 @@ public:
   bool empty_p () const;
 
  protected:
-  region (complexity c, symbol::id_t id, const region *parent, tree type);
+  region (complexity c, symbolic::node::id_t id, const region *parent, tree 
type);
 
  private:
   region_offset calc_offset (region_model_manager *mgr) const;
@@ -299,7 +299,7 @@ namespace ana {
 class space_region : public region
 {
 protected:
-  space_region (symbol::id_t id, const region *parent)
+  space_region (symbolic::node::id_t id, const region *parent)
   : region (complexity (parent), id, parent, NULL_TREE)
   {}
 };
@@ -354,7 +354,7 @@ public:
     const function *m_fun;
   };
 
-  frame_region (symbol::id_t id, const region *parent,
+  frame_region (symbolic::node::id_t id, const region *parent,
                const frame_region *calling_frame,
                const function &fun, int index)
   : space_region (id, parent), m_calling_frame (calling_frame),
@@ -425,7 +425,7 @@ namespace ana {
 class globals_region : public space_region
 {
  public:
-  globals_region (symbol::id_t id, const region *parent)
+  globals_region (symbolic::node::id_t id, const region *parent)
   : space_region (id, parent)
   {}
 
@@ -453,7 +453,7 @@ namespace ana {
 class code_region : public space_region
 {
 public:
-  code_region (symbol::id_t id, const region *parent)
+  code_region (symbolic::node::id_t id, const region *parent)
   : space_region (id, parent)
   {}
 
@@ -481,7 +481,7 @@ namespace ana {
 class function_region : public region
 {
 public:
-  function_region (symbol::id_t id, const code_region *parent, tree fndecl)
+  function_region (symbolic::node::id_t id, const code_region *parent, tree 
fndecl)
   : region (complexity (parent), id, parent, TREE_TYPE (fndecl)),
     m_fndecl (fndecl)
   {
@@ -520,7 +520,7 @@ namespace ana {
 class label_region : public region
 {
 public:
-  label_region (symbol::id_t id, const function_region *parent, tree label)
+  label_region (symbolic::node::id_t id, const function_region *parent, tree 
label)
   : region (complexity (parent), id, parent, NULL_TREE), m_label (label)
   {
     gcc_assert (TREE_CODE (label) == LABEL_DECL);
@@ -555,7 +555,7 @@ namespace ana {
 class stack_region : public space_region
 {
 public:
-  stack_region (symbol::id_t id, region *parent)
+  stack_region (symbolic::node::id_t id, region *parent)
   : space_region (id, parent)
   {}
 
@@ -583,7 +583,7 @@ namespace ana {
 class heap_region : public space_region
 {
 public:
-  heap_region (symbol::id_t id, region *parent)
+  heap_region (symbolic::node::id_t id, region *parent)
   : space_region (id, parent)
   {}
 
@@ -610,7 +610,7 @@ namespace ana {
 class thread_local_region : public space_region
 {
 public:
-  thread_local_region (symbol::id_t id, region *parent)
+  thread_local_region (symbolic::node::id_t id, region *parent)
   : space_region (id, parent)
   {}
 
@@ -638,7 +638,7 @@ namespace ana {
 class root_region : public region
 {
 public:
-  root_region (symbol::id_t id);
+  root_region (symbolic::node::id_t id);
 
   enum region_kind get_kind () const final override { return RK_ROOT; }
   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
@@ -697,7 +697,7 @@ public:
     const svalue *m_sval_ptr;
   };
 
-  symbolic_region (symbol::id_t id, region *parent, const svalue *sval_ptr);
+  symbolic_region (symbolic::node::id_t id, region *parent, const svalue 
*sval_ptr);
 
   const symbolic_region *
   dyn_cast_symbolic_region () const final override { return this; }
@@ -742,7 +742,7 @@ namespace ana {
 class decl_region : public region
 {
 public:
-  decl_region (symbol::id_t id, const region *parent, tree decl)
+  decl_region (symbolic::node::id_t id, const region *parent, tree decl)
   : region (complexity (parent), id, parent, TREE_TYPE (decl)), m_decl (decl),
     m_tracked (calc_tracked_p (decl)),
     m_ctor_svalue (nullptr)
@@ -833,7 +833,7 @@ public:
     tree m_field;
   };
 
-  field_region (symbol::id_t id, const region *parent, tree field)
+  field_region (symbolic::node::id_t id, const region *parent, tree field)
   : region (complexity (parent), id, parent, TREE_TYPE (field)),
     m_field (field)
   {}
@@ -917,7 +917,7 @@ public:
     const svalue *m_index;
   };
 
-  element_region (symbol::id_t id, const region *parent, tree element_type,
+  element_region (symbolic::node::id_t id, const region *parent, tree 
element_type,
                  const svalue *index)
   : region (complexity::from_pair (parent, index), id, parent, element_type),
     m_index (index)
@@ -1011,7 +1011,7 @@ public:
     const svalue *m_byte_offset;
   };
 
-  offset_region (symbol::id_t id, const region *parent, tree type,
+  offset_region (symbolic::node::id_t id, const region *parent, tree type,
                 const svalue *byte_offset)
   : region (complexity::from_pair (parent, byte_offset), id, parent, type),
     m_byte_offset (byte_offset)
@@ -1108,7 +1108,7 @@ public:
     const svalue *m_end_offset;
   };
 
-  sized_region (symbol::id_t id, const region *parent, tree type,
+  sized_region (symbolic::node::id_t id, const region *parent, tree type,
                const svalue *byte_size_sval)
   : region (complexity::from_pair (parent, byte_size_sval),
            id, parent, type),
@@ -1206,7 +1206,7 @@ public:
     tree m_type;
   };
 
-  cast_region (symbol::id_t id, const region *parent, tree type)
+  cast_region (symbolic::node::id_t id, const region *parent, tree type)
   : region (complexity (parent), id,
            parent, type)
   {}
@@ -1245,7 +1245,7 @@ namespace ana {
 class heap_allocated_region : public region
 {
 public:
-  heap_allocated_region (symbol::id_t id, const region *parent)
+  heap_allocated_region (symbolic::node::id_t id, const region *parent)
   : region (complexity (parent), id, parent, NULL_TREE)
   {}
 
@@ -1261,7 +1261,7 @@ public:
 class alloca_region : public region
 {
 public:
-  alloca_region (symbol::id_t id, const frame_region *parent)
+  alloca_region (symbolic::node::id_t id, const frame_region *parent)
   : region (complexity (parent), id, parent, NULL_TREE)
   {}
 
@@ -1276,7 +1276,7 @@ public:
 class string_region : public region
 {
 public:
-  string_region (symbol::id_t id, const region *parent, tree string_cst)
+  string_region (symbolic::node::id_t id, const region *parent, tree 
string_cst)
   : region (complexity (parent), id, parent, TREE_TYPE (string_cst)),
     m_string_cst (string_cst)
   {}
@@ -1355,7 +1355,7 @@ public:
     bit_range m_bits;
   };
 
-  bit_range_region (symbol::id_t id, const region *parent, tree type,
+  bit_range_region (symbolic::node::id_t id, const region *parent, tree type,
                    const bit_range &bits)
   : region (complexity (parent), id, parent, type),
     m_bits (bits)
@@ -1444,7 +1444,7 @@ public:
     unsigned m_idx;
   };
 
-  var_arg_region (symbol::id_t id, const frame_region *parent,
+  var_arg_region (symbolic::node::id_t id, const frame_region *parent,
                  unsigned idx)
   : region (complexity (parent), id, parent, NULL_TREE),
     m_idx (idx)
@@ -1488,7 +1488,7 @@ namespace ana {
 class errno_region : public region
 {
 public:
-  errno_region (symbol::id_t id, const thread_local_region *parent)
+  errno_region (symbolic::node::id_t id, const thread_local_region *parent)
   : region (complexity (parent), id, parent, integer_type_node)
   {}
 
@@ -1552,7 +1552,7 @@ namespace ana {
 class unknown_region : public region
 {
 public:
-  unknown_region (symbol::id_t id, const region *parent, tree type)
+  unknown_region (symbolic::node::id_t id, const region *parent, tree type)
   : region (complexity (parent), id, parent, type)
   {}
 
diff --git a/gcc/analyzer/svalue.cc b/gcc/analyzer/svalue.cc
index e6a682efd75..cde7c66f45b 100644
--- a/gcc/analyzer/svalue.cc
+++ b/gcc/analyzer/svalue.cc
@@ -47,7 +47,7 @@ static int cmp_csts_and_types (const_tree cst1, const_tree 
cst2);
 
 /* class svalue.  */
 
-/* Dump a tree-like representation of this svalue and its constituent symbols
+/* Dump a tree-like representation of this svalue and its constituent 
symbolic::nodes
    to stderr, using global_dc's colorization and theming options.
 
    For example:
@@ -1487,7 +1487,7 @@ unaryop_svalue::key_t::operator< (const key_t &other) 
const
     return c < 0;
   if (int c = cmp_types (m_type, other.m_type))
     return c < 0;
-  if (int c = symbol::cmp_ids (m_arg, other.m_arg))
+  if (int c = symbolic::node::cmp_ids (m_arg, other.m_arg))
     return c < 0;
   return false;
 }
@@ -1631,9 +1631,9 @@ binop_svalue::key_t::operator< (const key_t &other) const
     return c < 0;
   if (int c = cmp_types (m_type, other.m_type))
     return c < 0;
-  if (int c = symbol::cmp_ids (m_arg0, other.m_arg0))
+  if (int c = symbolic::node::cmp_ids (m_arg0, other.m_arg0))
     return c < 0;
-  if (int c = symbol::cmp_ids (m_arg1, other.m_arg1))
+  if (int c = symbolic::node::cmp_ids (m_arg1, other.m_arg1))
     return c < 0;
   return false;
 }
@@ -1743,16 +1743,16 @@ sub_svalue::key_t::operator< (const key_t &other) const
 {
   if (int c = cmp_types (m_type, other.m_type))
     return c < 0;
-  if (int c = symbol::cmp_ids (m_parent_svalue, other.m_parent_svalue))
+  if (int c = symbolic::node::cmp_ids (m_parent_svalue, other.m_parent_svalue))
     return c < 0;
-  if (int c = symbol::cmp_ids (m_subregion, other.m_subregion))
+  if (int c = symbolic::node::cmp_ids (m_subregion, other.m_subregion))
     return c < 0;
   return false;
 }
 
 /* sub_svalue'c ctor.  */
 
-sub_svalue::sub_svalue (symbol::id_t id,
+sub_svalue::sub_svalue (symbolic::node::id_t id,
                        tree type, const svalue *parent_svalue,
                        const region *subregion)
 : svalue (complexity::from_pair (parent_svalue->get_complexity (),
@@ -1868,16 +1868,16 @@ repeated_svalue::key_t::operator< (const key_t &other) 
const
 {
   if (int c = cmp_types (m_type, other.m_type))
     return c < 0;
-  if (int c = symbol::cmp_ids (m_outer_size, other.m_outer_size))
+  if (int c = symbolic::node::cmp_ids (m_outer_size, other.m_outer_size))
     return c < 0;
-  if (int c = symbol::cmp_ids (m_inner_svalue, other.m_inner_svalue))
+  if (int c = symbolic::node::cmp_ids (m_inner_svalue, other.m_inner_svalue))
     return c < 0;
   return false;
 }
 
 /* repeated_svalue'c ctor.  */
 
-repeated_svalue::repeated_svalue (symbol::id_t id,
+repeated_svalue::repeated_svalue (symbolic::node::id_t id,
                                  tree type,
                                  const svalue *outer_size,
                                  const svalue *inner_svalue)
@@ -2031,14 +2031,14 @@ bits_within_svalue::key_t::operator< (const key_t 
&other) const
     return c < 0;
   if (int c = bit_range::cmp (m_bits, other.m_bits))
     return c < 0;
-  if (int c = symbol::cmp_ids (m_inner_svalue, other.m_inner_svalue))
+  if (int c = symbolic::node::cmp_ids (m_inner_svalue, other.m_inner_svalue))
     return c < 0;
   return false;
 }
 
 /* bits_within_svalue'c ctor.  */
 
-bits_within_svalue::bits_within_svalue (symbol::id_t id,
+bits_within_svalue::bits_within_svalue (symbolic::node::id_t id,
                                        tree type,
                                        const bit_range &bits,
                                        const svalue *inner_svalue)
@@ -2148,9 +2148,9 @@ widening_svalue::key_t::operator< (const key_t &other) 
const
     return c < 0;
   if (int c = m_snode->m_id - other.m_snode->m_id)
     return c < 0;
-  if (int c = symbol::cmp_ids (m_base_sval, other.m_base_sval))
+  if (int c = symbolic::node::cmp_ids (m_base_sval, other.m_base_sval))
     return c < 0;
-  if (int c = symbol::cmp_ids (m_iter_sval, other.m_iter_sval))
+  if (int c = symbolic::node::cmp_ids (m_iter_sval, other.m_iter_sval))
     return c < 0;
   return false;
 }
@@ -2444,7 +2444,7 @@ compound_svalue::key_t::operator< (const key_t &other) 
const
   return false;
 }
 
-compound_svalue::compound_svalue (symbol::id_t id,
+compound_svalue::compound_svalue (symbolic::node::id_t id,
                                  tree type,
                                  concrete_binding_map &&map)
 : svalue (map.calc_complexity (), id, type), m_map (std::move (map))
@@ -2459,7 +2459,7 @@ compound_svalue::compound_svalue (symbol::id_t id,
 #endif
 }
 
-compound_svalue::compound_svalue (symbol::id_t id,
+compound_svalue::compound_svalue (symbolic::node::id_t id,
                                  tree type,
                                  const concrete_binding_map &map)
 : svalue (map.calc_complexity (), id, type), m_map (map)
@@ -2604,7 +2604,7 @@ conjured_svalue::key_t::operator< (const key_t &other) 
const
     return c < 0;
   if (int c = m_stmt->uid - other.m_stmt->uid)
     return c < 0;
-  if (int c = symbol::cmp_ids (m_id_reg, other.m_id_reg))
+  if (int c = symbolic::node::cmp_ids (m_id_reg, other.m_id_reg))
     return c < 0;
   if (int c = m_idx == other.m_idx)
     return c < 0;
@@ -2697,7 +2697,7 @@ asm_output_svalue::key_t::operator< (const key_t &other) 
const
   if (int c = (int)m_num_inputs - (int)other.m_num_inputs)
     return c < 0;
   for (unsigned i = 0; i < m_num_inputs; i++)
-    if (int c = symbol::cmp_ids (m_input_arr[i], other.m_input_arr[i]))
+    if (int c = symbolic::node::cmp_ids (m_input_arr[i], other.m_input_arr[i]))
       return c < 0;
   return false;
 }
@@ -2806,7 +2806,7 @@ const_fn_result_svalue::key_t::operator< (const key_t 
&other) const
   if (int c = (int)m_num_inputs - (int)other.m_num_inputs)
     return c < 0;
   for (unsigned i = 0; i < m_num_inputs; i++)
-    if (int c = symbol::cmp_ids (m_input_arr[i], other.m_input_arr[i]))
+    if (int c = symbolic::node::cmp_ids (m_input_arr[i], other.m_input_arr[i]))
       return c < 0;
   return false;
 }
diff --git a/gcc/analyzer/svalue.h b/gcc/analyzer/svalue.h
index 9322ae90b1f..a5f1b1e9f4c 100644
--- a/gcc/analyzer/svalue.h
+++ b/gcc/analyzer/svalue.h
@@ -21,7 +21,7 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef GCC_ANALYZER_SVALUE_H
 #define GCC_ANALYZER_SVALUE_H
 
-#include "analyzer/symbol.h"
+#include "analyzer/symbolic-nodes.h"
 #include "analyzer/store.h"
 #include "analyzer/program-point.h"
 #include "text-art/widget.h"
@@ -88,7 +88,7 @@ enum svalue_kind
 
 /* An abstract base class representing a value held by a region of memory.  */
 
-class svalue : public symbol
+class svalue : public symbolic::node
 {
 public:
   virtual ~svalue () {}
@@ -204,8 +204,8 @@ public:
   }
 
  protected:
-  svalue (complexity c, symbol::id_t id, tree type)
-  : symbol (c, id), m_type (type)
+  svalue (complexity c, symbolic::node::id_t id, tree type)
+  : symbolic::node (c, id), m_type (type)
   {}
 
   void print_svalue_node_label (pretty_printer *pp) const;
@@ -245,7 +245,7 @@ public:
     const region *m_reg;
   };
 
-  region_svalue (symbol::id_t id, tree type, const region *reg)
+  region_svalue (symbolic::node::id_t id, tree type, const region *reg)
   : svalue (complexity (reg), id, type),
     m_reg (reg)
   {
@@ -316,7 +316,7 @@ public:
     tree m_cst;
   };
 
-  constant_svalue (symbol::id_t id, tree type, tree cst_expr)
+  constant_svalue (symbolic::node::id_t id, tree type, tree cst_expr)
   : svalue (complexity (1, 1), id, type),
     m_cst_expr (cst_expr)
   {
@@ -379,7 +379,7 @@ namespace ana {
 class unknown_svalue : public svalue
 {
 public:
-  unknown_svalue (symbol::id_t id, tree type)
+  unknown_svalue (symbolic::node::id_t id, tree type)
   : svalue (complexity (1, 1), id, type)
   {}
 
@@ -456,7 +456,7 @@ public:
     tree m_type;
   };
 
-  poisoned_svalue (enum poison_kind kind, symbol::id_t id, tree type)
+  poisoned_svalue (enum poison_kind kind, symbolic::node::id_t id, tree type)
   : svalue (complexity (1, 1), id, type), m_kind (kind) {}
 
   enum svalue_kind get_kind () const final override { return SK_POISONED; }
@@ -551,7 +551,7 @@ public:
   };
 
   setjmp_svalue (const setjmp_record &setjmp_record,
-                symbol::id_t id,
+                symbolic::node::id_t id,
                 tree type)
   : svalue (complexity (1, 1), id, type), m_setjmp_record (setjmp_record)
   {}
@@ -601,7 +601,7 @@ namespace ana {
 class initial_svalue : public svalue
 {
 public:
-  initial_svalue (symbol::id_t id, tree type, const region *reg)
+  initial_svalue (symbolic::node::id_t id, tree type, const region *reg)
   : svalue (complexity (reg), id, type), m_reg (reg)
   {
     gcc_assert (m_reg != nullptr);
@@ -669,7 +669,7 @@ public:
     const svalue *m_arg;
   };
 
-  unaryop_svalue (symbol::id_t id, tree type, enum tree_code op,
+  unaryop_svalue (symbolic::node::id_t id, tree type, enum tree_code op,
                  const svalue *arg)
   : svalue (complexity (arg), id, type), m_op (op), m_arg (arg)
   {
@@ -748,7 +748,7 @@ public:
     const svalue *m_arg1;
   };
 
-  binop_svalue (symbol::id_t id, tree type, enum tree_code op,
+  binop_svalue (symbolic::node::id_t id, tree type, enum tree_code op,
                const svalue *arg0, const svalue *arg1)
   : svalue (complexity::from_pair (arg0->get_complexity (),
                                    arg1->get_complexity ()),
@@ -828,7 +828,7 @@ public:
     const svalue *m_parent_svalue;
     const region *m_subregion;
   };
-  sub_svalue (symbol::id_t id, tree type, const svalue *parent_svalue,
+  sub_svalue (symbolic::node::id_t id, tree type, const svalue *parent_svalue,
              const region *subregion);
 
   enum svalue_kind get_kind () const final override { return SK_SUB; }
@@ -897,7 +897,7 @@ public:
     const svalue *m_outer_size;
     const svalue *m_inner_svalue;
   };
-  repeated_svalue (symbol::id_t id,
+  repeated_svalue (symbolic::node::id_t id,
                   tree type,
                   const svalue *outer_size,
                   const svalue *inner_svalue);
@@ -974,7 +974,7 @@ public:
     bit_range m_bits;
     const svalue *m_inner_svalue;
   };
-  bits_within_svalue (symbol::id_t id,
+  bits_within_svalue (symbolic::node::id_t id,
                      tree type,
                      const bit_range &bits,
                      const svalue *inner_svalue);
@@ -1037,7 +1037,7 @@ namespace ana {
 class unmergeable_svalue : public svalue
 {
 public:
-  unmergeable_svalue (symbol::id_t id, const svalue *arg)
+  unmergeable_svalue (symbolic::node::id_t id, const svalue *arg)
   : svalue (complexity (arg), id, arg->get_type ()), m_arg (arg)
   {
   }
@@ -1084,7 +1084,7 @@ namespace ana {
 class placeholder_svalue : public svalue
 {
 public:
-  placeholder_svalue (symbol::id_t id, tree type, const char *name)
+  placeholder_svalue (symbolic::node::id_t id, tree type, const char *name)
   : svalue (complexity (1, 1), id, type), m_name (name)
   {
   }
@@ -1163,7 +1163,7 @@ public:
      DIR_UNKNOWN
     };
 
-  widening_svalue (symbol::id_t id, tree type, const supernode *snode,
+  widening_svalue (symbolic::node::id_t id, tree type, const supernode *snode,
                   const svalue *base_sval, const svalue *iter_sval)
   : svalue (complexity::from_pair (base_sval->get_complexity (),
                                   iter_sval->get_complexity ()),
@@ -1257,8 +1257,8 @@ public:
     const concrete_binding_map *m_map_ptr;
   };
 
-  compound_svalue (symbol::id_t id, tree type, concrete_binding_map &&map);
-  compound_svalue (symbol::id_t id, tree type, const concrete_binding_map 
&map);
+  compound_svalue (symbolic::node::id_t id, tree type, concrete_binding_map 
&&map);
+  compound_svalue (symbolic::node::id_t id, tree type, const 
concrete_binding_map &map);
 
   enum svalue_kind get_kind () const final override { return SK_COMPOUND; }
   const compound_svalue *dyn_cast_compound_svalue () const final override
@@ -1373,7 +1373,7 @@ public:
     unsigned m_idx;
   };
 
-  conjured_svalue (symbol::id_t id, tree type, const gimple *stmt,
+  conjured_svalue (symbolic::node::id_t id, tree type, const gimple *stmt,
                   const region *id_reg, unsigned idx)
   : svalue (complexity (id_reg), id, type),
     m_stmt (stmt), m_id_reg (id_reg), m_idx (idx)
@@ -1469,7 +1469,7 @@ public:
     const svalue *m_input_arr[MAX_INPUTS];
   };
 
-  asm_output_svalue (symbol::id_t id,
+  asm_output_svalue (symbolic::node::id_t id,
                     tree type,
                     const char *asm_string,
                     unsigned output_idx,
@@ -1586,7 +1586,7 @@ public:
     const svalue *m_input_arr[MAX_INPUTS];
   };
 
-  const_fn_result_svalue (symbol::id_t id,
+  const_fn_result_svalue (symbolic::node::id_t id,
                          tree type,
                          tree fndecl,
                          const vec<const svalue *> &inputs)
diff --git a/gcc/analyzer/symbol.cc b/gcc/analyzer/symbolic-nodes.cc
similarity index 82%
rename from gcc/analyzer/symbol.cc
rename to gcc/analyzer/symbolic-nodes.cc
index 63419fdcd28..2c45feb5144 100644
--- a/gcc/analyzer/symbol.cc
+++ b/gcc/analyzer/symbolic-nodes.cc
@@ -20,18 +20,18 @@ along with GCC; see the file COPYING3.  If not see
 
 #include "analyzer/common.h"
 
-#include "analyzer/symbol.h"
+#include "analyzer/symbolic-nodes.h"
 
 #if ENABLE_ANALYZER
 
 namespace ana {
 
-/* Compare SYM1 and SYM2 by id.  */
+/* Compare N1 and N2 by id.  */
 
 int
-symbol::cmp_ids (const symbol *sym1, const symbol *sym2)
+symbolic::node::cmp_ids (const symbolic::node *n1, const symbolic::node *n2)
 {
-  return (long)sym1->get_id () - (long)sym2->get_id ();
+  return (long)n1->get_id () - (long)n2->get_id ();
 }
 
 } // namespace ana
diff --git a/gcc/analyzer/symbol.h b/gcc/analyzer/symbolic-nodes.h
similarity index 63%
rename from gcc/analyzer/symbol.h
rename to gcc/analyzer/symbolic-nodes.h
index 2a209e49f5b..990d7c6cb6a 100644
--- a/gcc/analyzer/symbol.h
+++ b/gcc/analyzer/symbolic-nodes.h
@@ -18,27 +18,36 @@ You should have received a copy of the GNU General Public 
License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-#ifndef GCC_ANALYZER_SYMBOL_H
-#define GCC_ANALYZER_SYMBOL_H
+#ifndef GCC_ANALYZER_SYMBOLIC_NODES_H
+#define GCC_ANALYZER_SYMBOLIC_NODES_H
 
 #include "analyzer/complexity.h"
 
 namespace ana {
+namespace symbolic {
 
-/* Base class for svalues and regions: has a complexity and a numeric ID.  */
+/* Abstract base class for the various tree-like purely-functional
+   data structures we use during symbolic execution.
 
-class symbol
+   Instances are owned by a manager and reused, with memoization/caching
+   (compare to "hash consing" and value numbering).
+
+   Instances have a complexity and a numeric ID.  */
+
+class node
 {
  public:
-  typedef unsigned id_t;
+  using id_t = unsigned;
+
+  virtual ~node () = default;
 
   const complexity &get_complexity () const { return m_complexity; }
 
   id_t get_id () const { return m_id; }
-  static int cmp_ids (const symbol *s1, const symbol *s2);
+  static int cmp_ids (const symbolic::node *s1, const symbolic::node *s2);
 
  protected:
-  symbol (complexity c, unsigned id)
+  node (complexity c, unsigned id)
   : m_complexity (c),
     m_id (id)
   {}
@@ -48,6 +57,8 @@ class symbol
   id_t m_id; // for deterministic sorting at this stage, for dumps
 };
 
+} // namespace symbolic
+
 } // namespace ana
 
-#endif /* GCC_ANALYZER_SYMBOL_H */
+#endif /* GCC_ANALYZER_SYMBOLIC_NODES_H */
-- 
2.56.0

Reply via email to