aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraphunit.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2013-09-06 01:04:11 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2013-09-05 23:04:11 +0000
commitd352b2459fa6e4d5bc320af9912769ff3416a3d5 (patch)
tree061647d592f6fd386e79ab868303b34b7d53e742 /gcc/cgraphunit.c
parent17796c434dc09e45dabc2b2e7c1123fffa91d9bd (diff)
downloadgcc-d352b2459fa6e4d5bc320af9912769ff3416a3d5.zip
gcc-d352b2459fa6e4d5bc320af9912769ff3416a3d5.tar.gz
gcc-d352b2459fa6e4d5bc320af9912769ff3416a3d5.tar.bz2
re PR c++/58201 (Undefined reference to `B::B(void const**)')
PR middle-end/58201 * cgraphunit.c (analyze_functions): Clear AUX fields after processing; initialize assembler name has. * g++.dg/torture/pr58201_0.C: New testcase. * g++.dg/torture/pr58201_1.C: New testcase. * g++.dg/torture/pr58201.h: New testcase. From-SVN: r202298
Diffstat (limited to 'gcc/cgraphunit.c')
-rw-r--r--gcc/cgraphunit.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index db3db4b..125fb3b 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -1064,6 +1064,8 @@ analyze_functions (void)
}
node->symbol.aux = NULL;
}
+ for (;node; node = node->symbol.next)
+ node->symbol.aux = NULL;
first_analyzed = cgraph_first_function ();
first_analyzed_var = varpool_first_variable ();
if (cgraph_dump_file)
@@ -1074,6 +1076,11 @@ analyze_functions (void)
bitmap_obstack_release (NULL);
pointer_set_destroy (reachable_call_targets);
ggc_collect ();
+ /* Initialize assembler name hash, in particular we want to trigger C++
+ mangling and same body alias creation before we free DECL_ARGUMENTS
+ used by it. */
+ if (!seen_error ())
+ symtab_initialize_asm_name_hash ();
}
/* Translate the ugly representation of aliases as alias pairs into nice