On Tue, Jan 20, 2015 at 10:18:25AM +0100, Richard Biener wrote: > 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,
the one in the pr, basically one file is compiled without -flto and then linked with -flto that + an odr violation making the two object files different sets of thunks. does the lto test suite support not passing -flto to one compilation? it wasn't clear to me how to put the test case in the testsuite. Trev > 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 > >