re PR middle-end/54630 (GCC 4.8 --enable-languages=c build fails: Undefined symbols...
authorJakub Jelinek <jakub@redhat.com>
Mon, 19 Nov 2012 13:44:15 +0000 (14:44 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 19 Nov 2012 13:44:15 +0000 (14:44 +0100)
PR middle-end/54630
* tree-ssa-coalesce.c (coalesce_ssa_name): Remove static
keyword from ssa_name_hash var.

* class.c (fixed_type_or_null_ref_ht): New variable.
(fixed_type_or_null): Use it instead of local static ht.

From-SVN: r193620

gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/testsuite/ChangeLog
gcc/tree-ssa-coalesce.c

index 410926432166b1333288b50868835bb3956f55f7..f1811099a5c6d8ad6eacd93b07f82fd9126961ec 100644 (file)
@@ -1,3 +1,9 @@
+2012-11-19  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/54630
+       * tree-ssa-coalesce.c (coalesce_ssa_name): Remove static
+       keyword from ssa_name_hash var.
+
 2012-11-19  Maxim Kuznetsov  <maxim.kuznetsov@intel.com>
            Kirill Yukhin  <kirill.yukhin@intel.com>
            Michael Zolotukhin  <michael.v.zolotukhin@intel.com>
index 110cdc4368895e89cc0c8a06aeafd427d19d888f..a4e76a6f926a1de4f7c8c186e491518895256f49 100644 (file)
@@ -1,3 +1,9 @@
+2012-11-19  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/54630
+       * class.c (fixed_type_or_null_ref_ht): New variable.
+       (fixed_type_or_null): Use it instead of local static ht.
+
 2012-11-17  Diego Novillo  <dnovillo@google.com>
 
        Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)
index 56fe1d1073c56ed41fc2e6c90c43de0056a44d34..2737cbc3ecf77664bab4f271a2b574a6a642d27a 100644 (file)
@@ -6568,6 +6568,9 @@ finish_struct (tree t, tree attributes)
   return t;
 }
 \f
+/* Hash table to avoid endless recursion when handling references.  */
+static hash_table <pointer_hash <tree_node> > fixed_type_or_null_ref_ht;
+
 /* Return the dynamic type of INSTANCE, if known.
    Used to determine whether the virtual function table is needed
    or not.
@@ -6683,9 +6686,8 @@ fixed_type_or_null (tree instance, int *nonnull, int *cdtorp)
       else if (TREE_CODE (TREE_TYPE (instance)) == REFERENCE_TYPE)
        {
          /* We only need one hash table because it is always left empty.  */
-         static hash_table <pointer_hash <tree_node> > ht;
-         if (!ht.is_created ())
-           ht.create (37); 
+         if (!fixed_type_or_null_ref_ht.is_created ())
+           fixed_type_or_null_ref_ht.create (37); 
 
          /* Reference variables should be references to objects.  */
          if (nonnull)
@@ -6697,15 +6699,15 @@ fixed_type_or_null (tree instance, int *nonnull, int *cdtorp)
          if (TREE_CODE (instance) == VAR_DECL
              && DECL_INITIAL (instance)
              && !type_dependent_expression_p_push (DECL_INITIAL (instance))
-             && !ht.find (instance))
+             && !fixed_type_or_null_ref_ht.find (instance))
            {
              tree type;
              tree_node **slot;
 
-             slot = ht.find_slot (instance, INSERT);
+             slot = fixed_type_or_null_ref_ht.find_slot (instance, INSERT);
              *slot = instance;
              type = RECUR (DECL_INITIAL (instance));
-             ht.remove_elt (instance);
+             fixed_type_or_null_ref_ht.remove_elt (instance);
 
              return type;
            }
index dd5e69c0b2e5406d82afe3a4be551ffc65d6fa6a..636de23d019e140782c8361bb7f7e87f9efec362 100644 (file)
@@ -1,7 +1,6 @@
 2012-11-19  Tom de Vries  <tom@codesourcery.com>
 
        PR rtl-optimization/55315
-
        * gcc.target/mips/pr55315.c: New test.
 
 2012-11-17  Jakub Jelinek  <jakub@redhat.com>
index 35774a7b5b206049d251fb565aeffa26f50cbd77..ce04fdf7759b9fc1c17c9b623802ef6ad953c349 100644 (file)
@@ -1,5 +1,5 @@
 /* Coalesce SSA_NAMES together for the out-of-ssa pass.
-   Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+   Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
    Free Software Foundation, Inc.
    Contributed by Andrew MacLeod <amacleod@redhat.com>
 
@@ -1292,7 +1292,6 @@ coalesce_ssa_name (void)
   bitmap used_in_copies = BITMAP_ALLOC (NULL);
   var_map map;
   unsigned int i;
-  static hash_table <ssa_name_var_hash> ssa_name_hash;
 
   cl = create_coalesce_list ();
   map = create_outofssa_var_map (cl, used_in_copies);
@@ -1301,6 +1300,8 @@ coalesce_ssa_name (void)
      so debug info remains undisturbed.  */
   if (!optimize)
     {
+      hash_table <ssa_name_var_hash> ssa_name_hash;
+
       ssa_name_hash.create (10);
       for (i = 1; i < num_ssa_names; i++)
        {