On Wed, Jan 18, 2023 at 01:39:18PM +0100, Andreas Schwab wrote: > On Jan 18 2023, Jakub Jelinek wrote: > > > With LTO each function has the DECL_FUNCTION_SPECIFIC_OPTIMIZATION > > (and _TARGET), for functions with optimize attribute obviously as without > > LTO specific to what options have been overridden (but with defaults from > > TU's command line etc.), for functions without that simply with what > > options has the TU. > > Sorry, I cannot parse that sentence. Could you please try again?
After parsing options GCC creates an OPTIMIZATION_NODE tree with all the PerFunction/Optimization option state recorded in it (and more). That node is then when writing LTO attached to each function (different node if a function has optimize attribute etc.). That is streamed in by lto1 back and on each set_cfun such saved options are stored into global_options{,_set}. > > lto1 then streams in those options and when switching functions switches > > the global options. > > Why does that not work then? I don't know what doesn't work. You haven't mentioned what kind of PR you're trying to fix or what problem you are seeing. Jakub