Message ID | e63fb3d3-50a2-8c31-9648-506fad70499e@codesourcery.com |
---|---|
State | New |
Headers | show |
Series | OpenMP requires: Fix diagnostic filename corner case | expand |
On Fri, Jul 22, 2022 at 12:38:31PM +0200, Tobias Burnus wrote: > OpenMP requires: Fix diagnostic filename corner case > > The issue occurs when there is, e.g., main._omp_fn.0 in two files with > different OpenMP requires clauses. The function entries in the offload > table ends up having the same decl tree and, hence, the diagnostic showed > the same filename for both. Solution: Use the .o filename in this case. > > Note that the issue does not occur with same-named 'static' functions and > without the fatal error from the requires diagnostic, there would be > later a linker error due to having two 'main'. > > gcc/ > * lto-cgraph.cc (input_offload_tables): Improve requires diagnostic > when filenames come out identically. > > diff --git a/gcc/lto-cgraph.cc b/gcc/lto-cgraph.cc > index 062677a32eb..350195d86db 100644 > --- a/gcc/lto-cgraph.cc > +++ b/gcc/lto-cgraph.cc > @@ -1893,6 +1893,11 @@ input_offload_tables (bool do_force_output) > if (tmp_decl != NULL_TREE) > fn2 = IDENTIFIER_POINTER (DECL_NAME (tmp_decl)); > } > + if (fn1 == fn2) > + { > + fn1 = requires_fn; > + fn2 = file_data->file_name; > + } Ugly but ok. Jakub
OpenMP requires: Fix diagnostic filename corner case The issue occurs when there is, e.g., main._omp_fn.0 in two files with different OpenMP requires clauses. The function entries in the offload table ends up having the same decl tree and, hence, the diagnostic showed the same filename for both. Solution: Use the .o filename in this case. Note that the issue does not occur with same-named 'static' functions and without the fatal error from the requires diagnostic, there would be later a linker error due to having two 'main'. gcc/ * lto-cgraph.cc (input_offload_tables): Improve requires diagnostic when filenames come out identically. diff --git a/gcc/lto-cgraph.cc b/gcc/lto-cgraph.cc index 062677a32eb..350195d86db 100644 --- a/gcc/lto-cgraph.cc +++ b/gcc/lto-cgraph.cc @@ -1893,6 +1893,11 @@ input_offload_tables (bool do_force_output) if (tmp_decl != NULL_TREE) fn2 = IDENTIFIER_POINTER (DECL_NAME (tmp_decl)); } + if (fn1 == fn2) + { + fn1 = requires_fn; + fn2 = file_data->file_name; + } char buf1[sizeof ("unified_address, unified_shared_memory, " "reverse_offload")];