On Tue, Jan 20, 2015 at 3:31 AM, <tbsaunde+...@tbsaunde.org> wrote: > From: Trevor Saunders <tbsaunde+...@tbsaunde.org> > > Hi, > > when doing an lto link we can have some symbols be ir only and others be > machine code, which trips the assert here. Just adjust the assert to handle > that. > > bootstrapped + regtested x86_64-linux-gnu, ok?
Testcase? It's hard to understand what "machine code" is otherwise or why this assert would fail. Thanks, Richard. > Trev > > gcc/ > > * ipa-visibility.c (update_visibility_by_resolution_info): Only > assert when not in lto mode. > --- > gcc/ipa-visibility.c | 18 +++++++++++++----- > 1 file changed, 13 insertions(+), 5 deletions(-) > > diff --git a/gcc/ipa-visibility.c b/gcc/ipa-visibility.c > index 71894af..0791a1c 100644 > --- a/gcc/ipa-visibility.c > +++ b/gcc/ipa-visibility.c > @@ -425,11 +425,19 @@ update_visibility_by_resolution_info (symtab_node * > node) > if (node->same_comdat_group) > for (symtab_node *next = node->same_comdat_group; > next != node; next = next->same_comdat_group) > - gcc_assert (!next->externally_visible > - || define == (next->resolution == LDPR_PREVAILING_DEF_IRONLY > - || next->resolution == LDPR_PREVAILING_DEF > - || next->resolution == LDPR_UNDEF > - || next->resolution == > LDPR_PREVAILING_DEF_IRONLY_EXP)); > + { > + if (!next->externally_visible) > + continue; > + > + bool same_def > + = define == (next->resolution == LDPR_PREVAILING_DEF_IRONLY > + || next->resolution == LDPR_PREVAILING_DEF > + || next->resolution == LDPR_UNDEF > + || next->resolution == LDPR_PREVAILING_DEF_IRONLY_EXP); > + gcc_assert (in_lto_p || same_def); > + if (!same_def) > + return; > + } > > if (node->same_comdat_group) > for (symtab_node *next = node->same_comdat_group; > -- > 2.1.4 >