aboutsummaryrefslogtreecommitdiff
path: root/gcc/symtab.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2013-06-13 12:00:04 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2013-06-13 10:00:04 +0000
commite5b962d0ccb213b6ad1f2ba4d6a0b84c9e94b046 (patch)
tree56d91bbff9c3f0ae370755a4ad8ff8b876842047 /gcc/symtab.c
parenta8355e51785ca09eadc0e56afd0778c4ce076e2f (diff)
downloadgcc-e5b962d0ccb213b6ad1f2ba4d6a0b84c9e94b046.zip
gcc-e5b962d0ccb213b6ad1f2ba4d6a0b84c9e94b046.tar.gz
gcc-e5b962d0ccb213b6ad1f2ba4d6a0b84c9e94b046.tar.bz2
ipa.c (cgraph_externally_visible_p, [...]): Local comdats are not externally visible.
* ipa.c (cgraph_externally_visible_p, varpool_externally_visible_p): Local comdats are not externally visible. * symtab.c (dump_symtab_base): Dump externally visible. (verify_symtab_base): Verify back links in the symtab hash. From-SVN: r200064
Diffstat (limited to 'gcc/symtab.c')
-rw-r--r--gcc/symtab.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/symtab.c b/gcc/symtab.c
index c9f32d5..85d47a8 100644
--- a/gcc/symtab.c
+++ b/gcc/symtab.c
@@ -508,6 +508,8 @@ dump_symtab_base (FILE *f, symtab_node node)
fprintf (f, " force_output");
if (node->symbol.forced_by_abi)
fprintf (f, " forced_by_abi");
+ if (node->symbol.externally_visible)
+ fprintf (f, " externally_visible");
if (node->symbol.resolution != LDPR_UNKNOWN)
fprintf (f, " %s",
ld_plugin_symbol_resolution_names[(int)node->symbol.resolution]);
@@ -655,6 +657,15 @@ verify_symtab_base (symtab_node node)
error ("node not found in symtab decl hashtable");
error_found = true;
}
+ if (hashed_node != node
+ && (!is_a <cgraph_node> (node)
+ || !dyn_cast <cgraph_node> (node)->clone_of
+ || dyn_cast <cgraph_node> (node)->clone_of->symbol.decl
+ != node->symbol.decl))
+ {
+ error ("node differs from symtab decl hashtable");
+ error_found = true;
+ }
}
if (assembler_name_hash)
{