https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116535
--- Comment #5 from rguenther at suse dot de <rguenther at suse dot de> --- On Mon, 2 Sep 2024, burnus at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116535 > > --- Comment #4 from Tobias Burnus <burnus at gcc dot gnu.org> --- > (In reply to Richard Biener from comment #3) > > The forked processes may not write to any "global" data because forking > > makes that data not global ... instead any such "global" data has to be > > computed before forking. > > Well, the data is "computed" before - just a means is missing to propagate the > information whether to output the offload tables should be written or not is > missing. The current call stack is: > > With WPA, the code is run as follows: > > output_offload_tables > stream_out_partitions_1 > stream_out > ipa_write_optimization_summaries > write_lto > lto_output > output_offload_tables > > * * * > > I see two possibilities, the quick one: > > (A) > > --- a/gcc/lto-streamer.h > +++ b/gcc/lto-streamer.h > @@ -463,0 +464 @@ struct lto_symtab_encoder_d > + bool output_offload_tables; > > setting it - and propagating it through. Or set a global flag - all forked processes should see that. > (B) > Change how we output the tables. Currently, those bypass normal WPA and IPA > handling. Making them visible should avoid the 'force_output = 1' for all > table > entries (and only require it for the tables themselves) - and presumably fix > this issue as well as fixing PR 95622. Yeah, but the this sounds like a lot of work and we might want to fix this on branches.