aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraph.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2019-12-03 19:24:00 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2019-12-03 18:24:00 +0000
commit21cd8589291a1b415106740acd56509e0143356d (patch)
tree308a318b472270dc65235589a0837010dcb6c490 /gcc/cgraph.c
parent4f75f97bf61a610f21023b731159489e6d23f0fe (diff)
downloadgcc-21cd8589291a1b415106740acd56509e0143356d.zip
gcc-21cd8589291a1b415106740acd56509e0143356d.tar.gz
gcc-21cd8589291a1b415106740acd56509e0143356d.tar.bz2
Clear calls_comdat_local when comdat group is dissolved
while looking into Firefox inlining dumps I noticed that we often do not inline because we think function calls comdat local while the comdat group itself has been dissolved. * cgraph.c (cgraph_node::verify_node): Check that calls_comdat_local is set only for symbol in comdat group. * symtab.c (symtab_node::dissolve_same_comdat_group_1): Clear it. From-SVN: r278944
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r--gcc/cgraph.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index ae61de4..7288440 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -3094,6 +3094,11 @@ cgraph_node::verify_node (void)
error ("inline clone is forced to output");
error_found = true;
}
+ if (calls_comdat_local && !same_comdat_group)
+ {
+ error ("calls_comdat_local is set outside of a comdat group");
+ error_found = true;
+ }
for (e = indirect_calls; e; e = e->next_callee)
{
if (e->aux)