On Thu, Sep 24, 2020 at 11:41 AM Tobias Burnus <tob...@codesourcery.com> wrote: > > On 9/24/20 10:03 AM, Richard Biener wrote: > > >> The symbols are added to offload_vars + offload_funcs. > >> In lto-cgraph.c's output_offload_tables there is the last chance > >> to remove now unused nodes ? as once the tables are streamed > >> for device usage, they cannot be changed. Hence, there one > >> has > >> node->force_output = 1; > >> [Unrelated: this prevents later optimizations, which still > >> could be done; cf. PR95622] > >> > >> > >> The table itself is written in omp-offload.c's omp_finish_file. > > But this is called at LTRANS time only, in particular we seem > > to stream the offload_funcs/vars array, marking streamed nodes > > as force_output but we do not make the offload table visible > > to the partitioner. But force_output should make the > > nodes not renamed. But then output_offload_tables is called at > > the very end and we likely do not stream the altered > > force_output state. > > > > So - can you try, in prune_offload_funcs, in addition to > > setting DECL_PRESERVE_P, mark the cgraph node ->force_output > > so this happens early? I guess the same is needed for > > variables (there's no prune_offloar_vars ...). > > As it accesses global variables, I could do just the same > with the variables – but it did not seems to have an effect. > > Following Jakub's suggestion, I also added > __attribute__((used)) > to the tree belonging to both tables in omp-offload.c's omp_finish > but that did not help, either. > > I think both the 'used' and 'force_output' are red herrings: > after all, the tables and the referrenced funcs/vars are output; > the problem is 'just' that they end up in different ltrans > while not being public. – Thus, some property ia wrong > during building the cgraph or when it is partitioned into ltrans. > > Any additional suggestion to try?
As I said the table itself is only created _after_ partitioning so LTO doesn't see they are referenced from outside of their LTRANS unit (in the unit that has the offload table). I think we need to create the offload table during WPA instead. Richard. > Tobias > > ----------------- > Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany > Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, > Alexander Walter