> 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