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
> >

Reply via email to