It looks like when transitioning to using target and optimization
option nodes for compile-time to link-time option streaming you
didn't adjust lto-opts.c nor lto-wrapper.c.  The following fixes
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.

We can do similar changes for optimize options, now, for all targets, no?

Thanks,
Richard.

2015-04-23  Richard Biener  <rguent...@suse.de>

        * lto-opts.c (lto_write_options): Do not record target options
        if we are targeting a SWITCHABLE_TARGET target.  We use target
        options on functions to transfer target flags from compile to
        link time.

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)

Reply via email to