https://gcc.gnu.org/g:e55aa018ba1c5ce3f756e56489b7007e736aa5a8
commit e55aa018ba1c5ce3f756e56489b7007e736aa5a8 Author: Tobias Burnus <tbur...@baylibre.com> Date: Thu Aug 8 10:42:25 2024 +0200 libgomp.c++/static-aggr-constructor-destructor-{1,2}.C: Fix scan-tree-dump In principle, the optimized dump should be the same on the host, but as 'nohost' is not handled, is is present. However when ENABLE_OFFLOADING is false, it is handled early enough to remove the function. libgomp/ChangeLog: * testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C: Split scan-tree-dump into with and without target offload_target_any. * testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C: Likewise. (cherry picked from commit e3a6dec326a127ad549246435b9d3835e9a32407) Diff: --- libgomp/ChangeLog.omp | 8 ++++++++ .../libgomp.c++/static-aggr-constructor-destructor-1.C | 15 ++++++++++++--- .../libgomp.c++/static-aggr-constructor-destructor-2.C | 16 +++++++++++++--- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/libgomp/ChangeLog.omp b/libgomp/ChangeLog.omp index df075af91530..6e99c7107c89 100644 --- a/libgomp/ChangeLog.omp +++ b/libgomp/ChangeLog.omp @@ -1,5 +1,13 @@ 2025-04-25 Thomas Schwinge <tschwi...@baylibre.com> + Backported from trunk: + 2024-08-08 Tobias Burnus <tbur...@baylibre.com> + + * testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C: Split + scan-tree-dump into with and without target offload_target_any. + * testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C: + Likewise. + Backported from trunk: 2024-08-07 Julian Brown <jul...@codesourcery.com> Tobias Burnus <tob...@baylibre.com> diff --git a/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C b/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C index 403a071c0c01..b5aafc8cabc2 100644 --- a/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C +++ b/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C @@ -9,9 +9,18 @@ // { dg-final { scan-tree-dump-not "omp_is_initial_device" "optimized" } } // { dg-final { scan-tree-dump-not "__omp_target_static_init_and_destruction" "optimized" } } -// FIXME: should be '-not' not '-times' 1: -// { dg-final { scan-tree-dump-times "void _GLOBAL__off_I_v1" 1 "optimized" } } -// { dg-final { scan-tree-dump-times "__attribute__\\(\\(\[^\n\r]*omp declare target nohost" 1 "optimized" } } + +// (A) No offloading configured: The symbols aren't present +// Caveat: They are present with -foffload=disable - or offloading +// configured but none of the optional offload packages/binaries installed. +// But the 'offload_target_any' check cannot distinguish those +// { dg-final { scan-tree-dump-not "void _GLOBAL__off_I_v1" "optimized" { target { ! offload_target_any } } } } +// { dg-final { scan-tree-dump-not "__attribute__\\(\\(\[^\n\r]*omp declare target nohost" "optimized" { target { ! offload_target_any } } } } + +// (B) With offload configured (and compiling for an offload target) +// the symbols are present (missed optimization). Hence: FIXME. +// { dg-final { scan-tree-dump-times "void _GLOBAL__off_I_v1" 1 "optimized" { target offload_target_any } } } +// { dg-final { scan-tree-dump-times "__attribute__\\(\\(\[^\n\r]*omp declare target nohost" 1 "optimized" { target offload_target_any } } } // { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-not "omp_initial_device;" "optimized" { target offload_target_amdgcn } } } // { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "v1\\._x = 5;" "optimized" { target offload_target_amdgcn } } } diff --git a/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C b/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C index 6dd4260a522c..9652a721bbe2 100644 --- a/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C +++ b/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C @@ -9,9 +9,19 @@ // { dg-final { scan-tree-dump-not "omp_is_initial_device" "optimized" } } // { dg-final { scan-tree-dump-not "__omp_target_static_init_and_destruction" "optimized" } } -// FIXME: should be '-not' not '-times' 1: -// { dg-final { scan-tree-dump-times "void _GLOBAL__off_I_" 1 "optimized" } } -// { dg-final { scan-tree-dump-times "__attribute__\\(\\(\[^\n\r]*omp declare target nohost" 1 "optimized" } } + +// (A) No offloading configured: The symbols aren't present +// Caveat: They are present with -foffload=disable - or offloading +// configured but none of the optional offload packages/binaries installed. +// But the 'offload_target_any' check cannot distinguish those +// { dg-final { scan-tree-dump-not "void _GLOBAL__off_I_v1" "optimized" { target { ! offload_target_any } } } } +// { dg-final { scan-tree-dump-not "__attribute__\\(\\(\[^\n\r]*omp declare target nohost" "optimized" { target { ! offload_target_any } } } } + +// (B) With offload configured (and compiling for an offload target) +// the symbols are present (missed optimization). Hence: FIXME. +// { dg-final { scan-tree-dump-times "void _GLOBAL__off_I_v1" 1 "optimized" { target offload_target_any } } } +// { dg-final { scan-tree-dump-times "__attribute__\\(\\(\[^\n\r]*omp declare target nohost" 1 "optimized" { target offload_target_any } } } + // { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-not "omp_initial_device;" "optimized" { target offload_target_amdgcn } } } // { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "v1\\._x = 5;" "optimized" { target offload_target_amdgcn } } }