> Hi!
> 
> As mentioned in the PR, the ix86_cmodel option is TargetSave,
> but during option processing is adjusted from flag_pic, which is
> for LTO a global option.
> This causes a problem when some translation unit is compiled with LTO
> without -fpic, and then the final link is done with -fpic - then
> ix86_cmodel might be the non-_PIC CM_* even when flag_pic is on, which
> greatly confuses the backend.
> 
> Fixed by adding a target hook to do such adjustments upon TARGET_OPTION_NODE
> streaming in.
> 
> Unfortunately, for some reason I can't now really reproduce the ICE and the
> testcase seems to be missing a function definition, but I've at least
> verified it that without the patch there is inconsistent value of
> ix86_cmodel while the patch fixes that.
> 
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
> 
> 2015-02-24  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR lto/64374
>       * target.def (target_option_stream_in): New target hook.
>       * tree-streamer-in.c (streamer_read_tree_bitfields): Invoke
>       targetm.target_option.post_stream_in if non-NULL.
>       * doc/tm.texi.in: Add @hook TARGET_OPTION_POST_STREAM_IN.
>       * doc/tm.texi: Updated.
>       * config/i386/i386.c (ix86_function_specific_post_stream_in): New
>       function.
>       (TARGET_OPTION_POST_STREAM_IN): Redefine.

Thanks, the i386 parts of the patch are OK, but I think you want to add the 
reverse
transformation, too.  I.e. if someone compiles with -fPIC but links without.

My plan to fix the testcase was to put it into ix86_function_specific_restore
which would save need for a new hook. But I am fine either way (just can't
approve the newhook)

Honza

Reply via email to