On Thu, Apr 23, 2015 at 05:16:19PM +0200, Jan Hubicka wrote:
> > the target option side (for SWITCHABLE_TARGET). Do not record
> > any target options in the lto_opts section.
> >
> > Honza - I suppose we don't have any testcase that this works, I'll
> > try to come up with sth. This also looks like a correctness issue
> > to me.
>
> Thanks, that would be a good idea. So with SWITCHABLE_TARGET
> we have problem that after switching the options are misinterpretted?
> I think Jakub made patch to simply skip target-option-node streaming here,
> how this is supposed to work.
> >
> > We can do similar changes for optimize options, now, for all targets, no?
>
> I am not quite sure about this; not all options are per-function nature.
> I need to audit all the target options for LTO safety, I did some work
> on this for optimization options, but the target options are still very wild.
> For example I am not quite convinced mixing -malign-double -mno-align-double
> units
> will work as expected.
SWITCHABLE_TARGETs are 3, i?86/x86_64, powerpc* and mips*, but mips*
does not support target attribute (and no other targets do).
Also, not all options are allowed in target attribute, doesn't the option
need to be Target and Save, I think not all CL_TARGET options are Save.
> > Index: gcc/lto-opts.c
> > ===================================================================
> > *** gcc/lto-opts.c (revision 222360)
> > --- gcc/lto-opts.c (working copy)
> > *************** lto_write_options (void)
> > *** 219,224 ****
> > --- 219,230 ----
> > && lto_stream_offload_p)
> > continue;
> >
> > + /* Do not store target-specific options if we target a
> > + SWITCHABLE_TARGET target. */
> > + if ((cl_options[option->opt_index].flags & CL_TARGET)
> > + && SWITCHABLE_TARGET)
> > + continue;
> > +
> > /* Drop options created from the gcc driver that will be rejected
> > when passed on to the driver again. */
> > if (cl_options[option->opt_index].cl_reject_driver)
Jakub