Commit abcc192b by Jakub Jelinek Committed by Jakub Jelinek

re PR middle-end/54630 (GCC 4.8 --enable-languages=c build fails: Undefined…

re PR middle-end/54630 (GCC 4.8 --enable-languages=c build fails: Undefined symbols: ___cxa_guard_acquire and ___cxa_guard_release)

	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
parent c293d490
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> 2012-11-19 Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Kirill Yukhin <kirill.yukhin@intel.com> Kirill Yukhin <kirill.yukhin@intel.com>
Michael Zolotukhin <michael.v.zolotukhin@intel.com> Michael Zolotukhin <michael.v.zolotukhin@intel.com>
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> 2012-11-17 Diego Novillo <dnovillo@google.com>
Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec) Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)
......
...@@ -6568,6 +6568,9 @@ finish_struct (tree t, tree attributes) ...@@ -6568,6 +6568,9 @@ finish_struct (tree t, tree attributes)
return t; return t;
} }
/* 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. /* Return the dynamic type of INSTANCE, if known.
Used to determine whether the virtual function table is needed Used to determine whether the virtual function table is needed
or not. or not.
...@@ -6683,9 +6686,8 @@ fixed_type_or_null (tree instance, int *nonnull, int *cdtorp) ...@@ -6683,9 +6686,8 @@ fixed_type_or_null (tree instance, int *nonnull, int *cdtorp)
else if (TREE_CODE (TREE_TYPE (instance)) == REFERENCE_TYPE) else if (TREE_CODE (TREE_TYPE (instance)) == REFERENCE_TYPE)
{ {
/* We only need one hash table because it is always left empty. */ /* We only need one hash table because it is always left empty. */
static hash_table <pointer_hash <tree_node> > ht; if (!fixed_type_or_null_ref_ht.is_created ())
if (!ht.is_created ()) fixed_type_or_null_ref_ht.create (37);
ht.create (37);
/* Reference variables should be references to objects. */ /* Reference variables should be references to objects. */
if (nonnull) if (nonnull)
...@@ -6697,15 +6699,15 @@ fixed_type_or_null (tree instance, int *nonnull, int *cdtorp) ...@@ -6697,15 +6699,15 @@ fixed_type_or_null (tree instance, int *nonnull, int *cdtorp)
if (TREE_CODE (instance) == VAR_DECL if (TREE_CODE (instance) == VAR_DECL
&& DECL_INITIAL (instance) && DECL_INITIAL (instance)
&& !type_dependent_expression_p_push (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 type;
tree_node **slot; tree_node **slot;
slot = ht.find_slot (instance, INSERT); slot = fixed_type_or_null_ref_ht.find_slot (instance, INSERT);
*slot = instance; *slot = instance;
type = RECUR (DECL_INITIAL (instance)); type = RECUR (DECL_INITIAL (instance));
ht.remove_elt (instance); fixed_type_or_null_ref_ht.remove_elt (instance);
return type; return type;
} }
......
2012-11-19 Tom de Vries <tom@codesourcery.com> 2012-11-19 Tom de Vries <tom@codesourcery.com>
PR rtl-optimization/55315 PR rtl-optimization/55315
* gcc.target/mips/pr55315.c: New test. * gcc.target/mips/pr55315.c: New test.
2012-11-17 Jakub Jelinek <jakub@redhat.com> 2012-11-17 Jakub Jelinek <jakub@redhat.com>
......
/* Coalesce SSA_NAMES together for the out-of-ssa pass. /* 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. Free Software Foundation, Inc.
Contributed by Andrew MacLeod <amacleod@redhat.com> Contributed by Andrew MacLeod <amacleod@redhat.com>
...@@ -1292,7 +1292,6 @@ coalesce_ssa_name (void) ...@@ -1292,7 +1292,6 @@ coalesce_ssa_name (void)
bitmap used_in_copies = BITMAP_ALLOC (NULL); bitmap used_in_copies = BITMAP_ALLOC (NULL);
var_map map; var_map map;
unsigned int i; unsigned int i;
static hash_table <ssa_name_var_hash> ssa_name_hash;
cl = create_coalesce_list (); cl = create_coalesce_list ();
map = create_outofssa_var_map (cl, used_in_copies); map = create_outofssa_var_map (cl, used_in_copies);
...@@ -1301,6 +1300,8 @@ coalesce_ssa_name (void) ...@@ -1301,6 +1300,8 @@ coalesce_ssa_name (void)
so debug info remains undisturbed. */ so debug info remains undisturbed. */
if (!optimize) if (!optimize)
{ {
hash_table <ssa_name_var_hash> ssa_name_hash;
ssa_name_hash.create (10); ssa_name_hash.create (10);
for (i = 1; i < num_ssa_names; i++) for (i = 1; i < num_ssa_names; i++)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment