diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2019-12-03 19:24:00 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2019-12-03 18:24:00 +0000 |
commit | 21cd8589291a1b415106740acd56509e0143356d (patch) | |
tree | 308a318b472270dc65235589a0837010dcb6c490 /gcc/cgraph.c | |
parent | 4f75f97bf61a610f21023b731159489e6d23f0fe (diff) | |
download | gcc-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.c | 5 |
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) |