PR lto/46083 (destructor priorities are wrong)

Jan Hubicka hubicka@ucw.cz
Sun Jan 9 18:45:00 GMT 2011


> On Sat, Jan 8, 2011 at 5:01 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
> > Hi,
> > the PR is about testsuite/initpri1.c failing with lto.
> >
> > I am not sure why the testcase is not run with -flto flags. It is declared as
> > /* { dg-do run { target init_priority } } */ and thus I would expect all
> > default flags
> > to be cycled over.
> 
> It is because it isn't in lto nor torture directories.
> 
> > The problem is simple - FINI_PRIORITY is not streamed at all.  The reason for
> > apparent omision seems to be assymetry in between INIT and FINI priorities.
> > While INIT priorities are defined for VAR_DECLs too, FINI priorities are
> > defined only for functions.
> >
> > I wonder whether we ever need VAR_DECL init priorities at all, I would expect
> > all constructors to be lowered to functions at that time, so perhaps the
> > streaming can be guarded by the same test as I use for FINI_PRIORITY.
> >
> > Anyway, that can be subsequent clenaup.
> >
> > x86_64 bootstrap/regtested in progress. OK if it passes?
> >
> >        PR lto/46083
> >        * lto-streamer-out.c (pack_ts_decl_with_vis_value_fields): Store
> >        DECL_FINI_PRIORITY.
> >        * lto-streamer-in.c )unpack_ts_decl_with_vis_value_fields):
> >        Restore DECL_FINI_PRIORITY.
> 
> Can you add a testcase?
Copying initpri1.c into lto directory should do the trick then, right?
I will give it a try.

Honza
> 
> Thanks.
> 
> 
> -- 
> H.J.



More information about the Gcc-patches mailing list