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.
This commit is contained in:
Tobias Burnus 2022-08-17 15:52:23 +02:00
parent d9c9424d2c
commit 027b281f1e

View file

@ -1881,6 +1881,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")];