re PR c/47786 (tree check: expected tree that contains 'decl minimal' structure,...
authorNathan Froyd <froydnj@codesourcery.com>
Mon, 7 Mar 2011 15:32:25 +0000 (15:32 +0000)
committerNathan Froyd <froydnj@gcc.gnu.org>
Mon, 7 Mar 2011 15:32:25 +0000 (15:32 +0000)
PR c/47786
* c-common.c (c_type_hash): Call list_length instead of iterating
through DECL_CHAIN.  Rename 'i' to 'n_elements'.

From-SVN: r170739

gcc/c-family/ChangeLog
gcc/c-family/c-common.c

index f89502dfcef08c90c904607d1f7851ead189801a..60fc08fa8492f2b0254a97dda356704ab22fb900 100644 (file)
@@ -1,3 +1,9 @@
+2011-03-07  Nathan Froyd  <froydnj@codesourcery.com>
+
+       PR c/47786
+       * c-common.c (c_type_hash): Call list_length instead of iterating
+       through DECL_CHAIN.  Rename 'i' to 'n_elements'.
+
 2011-02-19  Jakub Jelinek  <jakub@redhat.com>
 
        PR c/47809
index d696b5f9d8d2e68d1fe90964f43b65c92151d154..f0296612e5193eb9559417f5f77c9d0ca7163c09 100644 (file)
@@ -4035,7 +4035,7 @@ c_apply_type_quals_to_decl (int type_quals, tree decl)
 static hashval_t
 c_type_hash (const void *p)
 {
-  int i = 0;
+  int n_elements;
   int shift, size;
   const_tree const t = (const_tree) p;
   tree t2;
@@ -4064,14 +4064,15 @@ c_type_hash (const void *p)
     default:
       gcc_unreachable ();
     }
-  for (; t2; t2 = DECL_CHAIN (t2))
-    i++;
+  /* FIXME: We want to use a DECL_CHAIN iteration method here, but
+     TYPE_VALUES of ENUMERAL_TYPEs is stored as a TREE_LIST.  */
+  n_elements = list_length (t2);
   /* We might have a VLA here.  */
   if (TREE_CODE (TYPE_SIZE (t)) != INTEGER_CST)
     size = 0;
   else
     size = TREE_INT_CST_LOW (TYPE_SIZE (t));
-  return ((size << 24) | (i << shift));
+  return ((size << 24) | (n_elements << shift));
 }
 
 static GTY((param_is (union tree_node))) htab_t type_hash_table;