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.

Reply via email to