Files
Thomas Schwinge 12b329d00b libgomp: Robustify effective-target 'omp_usm' check
This was added in commit 1cf9fda493
"amdgcn: Adjust failure mode for gfx908 USM".

In a GCC configuration with both AMD and NVIDIA GPU code offloading supported,
and the selected AMD GPU code generation not supporting USM, but an USM-capable
NVIDIA GPU available, I see all test cases that require effective-target
'omp_usm' turn UNSUPPORTED, because:

    Executing on host: gcc  usm_available_2778376.c [...]
    [...]
    In function 'main._omp_fn.0':
    lto1: warning: Unified Shared Memory is required, but XNACK is disabled
    lto1: note: Try -foffload-options=-mxnack=any
    gcn mkoffload: warning: conflicting settings; XNACK is forced off but Unified Shared Memory is required
    UNSUPPORTED: [...]

That warning is, however, not relevant in the scenario described above: we're
not going to exercise AMD GPU code offloading at run time.

With the effective-target 'omp_usm' check robustified like this, the affected
test cases are then no longer UNSUPPORTED, but of course, there's then the
corollary issue that compilation of the test case itself now emits the very
same warning, which results in the "test for excess errors" FAILing, despite
the execution test PASSing, for example:

    FAIL: libgomp.c++/target-std__valarray-concurrent-usm.C (test for excess errors)
    PASS: libgomp.c++/target-std__valarray-concurrent-usm.C execution test

That's clearly not ideal either (but is representative of what real-world usage
would run into), but is certainly better than the whole test case turning
UNSUPPORTED.  To be continued, I guess...

	libgomp/
	* testsuite/lib/libgomp.exp (check_effective_target_omp_usm):
	Robustify.
2025-12-24 10:56:22 +01:00
..