diff mbox

[C++] symbol tables don't delete

Message ID c6a7599c-16ec-ceb8-72f8-b89ef917bc4c@acm.org
State New
Headers show

Commit Message

Nathan Sidwell June 16, 2017, 2:55 p.m. UTC
We don't need to delete entries from a symbol table, so there's no point 
providing that functionality.

Applied to trunk.

nathan
diff mbox

Patch

2017-06-16  Nathan Sidwell  <nathan@acm.org>

	Symbol tables are insert only.
	* cp-tree.h (default_hash_traits <lang_identifier *>): Don't
	derive from pointer_hash.  Make undeletable.

Index: cp-tree.h
===================================================================
--- cp-tree.h	(revision 249264)
+++ cp-tree.h	(working copy)
@@ -550,7 +550,7 @@  identifier_p (tree t)
 
 template <>
 struct default_hash_traits <lang_identifier *>
-  : pointer_hash <tree_node>, ggc_remove <tree>
+  : pointer_hash <tree_node>
 {
   /* Use a regular tree as the type, to make using the hash table
      simpler.  We'll get dynamic type checking with the hash function
@@ -558,10 +558,14 @@  struct default_hash_traits <lang_identif
   GTY((skip)) typedef tree value_type;
   GTY((skip)) typedef tree compare_type;
 
-  static hashval_t hash (const value_type &id)
+  static hashval_t hash (const value_type id)
   {
     return IDENTIFIER_HASH_VALUE (id);
   }
+
+  /* Nothing is deletable.  Everything is insertable.  */
+  static bool is_deleted (value_type) { return false; }
+  static void remove (value_type) { gcc_unreachable (); }
 };
 
 /* In an IDENTIFIER_NODE, nonzero if this identifier is actually a