[committed] libgomp.c++/static-aggr-constructor-destructor-{1,2}.C: Fix scan-tree-dump (was: [r15-2799 Regression] FAIL: libgomp.c++/static-aggr-constructor-destructor-2.C scan-tree-dump-times optimiz
haochen.jiang wrote: FAIL: libgomp.c++/static-aggr-constructor-destructor-1.C scan-tree-dump-times optimized "__attribute__\\(\\([^\n\r]*omp declare target nohost" 1 FAIL: libgomp.c++/static-aggr-constructor-destructor-1.C scan-tree-dump-times optimized "void _GLOBAL__off_I_v1" 1 Those symbols are generated even with ENABLE_OFFLOADING == false, but in that case they are optimized way (as they should). With offloading, the pass removing them comes too late, but we should handle 'nohost' explicitly. Once done, the dump will be the same (no symbol). Until this implemented, we now do: To make this test pass, we now use 'target (!) offload_target_any' to separate the cases, even though offload_target_any does not completely match ENABLE_OFFLOADING.* Committed as r15-2814-ge3a6dec326a127 Tobias (* If you configured with --enable-offload-defaulted and have no offload binaries available or when you smuggle '-foffload=disable' to the commandline, ENABLE_OFFLOADING is true while offload_target_any is false.) commit e3a6dec326a127ad549246435b9d3835e9a32407 Author: Tobias Burnus 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. --- .../libgomp.c++/static-aggr-constructor-destructor-1.C | 15 --- .../libgomp.c++/static-aggr-constructor-destructor-2.C | 16 +--- 2 files changed, 25 insertions(+), 6 deletions(-) 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 403a071c0c0..b5aafc8cabc 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 6dd4260a522..9652a721bbe 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 { sca
Re: [r15-4104 Regression] FAIL: gfortran.dg/gomp/allocate-static.f90 -Os (test for excess errors) on Linux/x86_64
haochen.jiang wrote: On Linux/x86_64, FAIL: gfortran.dg/gomp/allocate-static.f90 -O0 (test for excess errors) If anyone can reproduce this, I would be interested in the excess errors. On two machines – with and without offloading configured – I cannot reproduce this neither with a bootsstrap nor non-bootstrap build, neither with the testsuite nor under valgrind and also not with -m32 vs. -m64. Tobias
[committed] Move gfortran.dg/gomp/allocate-static.f90 to libgomp.fortran/ (was: [r15-4104 Regression] FAIL: gfortran.dg/gomp/allocate-static.f90 -Os (test for excess errors) on Linux/x86_64)
Committed as r15-4127-gb95ad25f9c9376 Hi Thomas, Thomas Schwinge wrote: On 2024-10-07T17:07:05+0200, Tobias Burnus wrote: If anyone can reproduce this, I would be interested in the excess errors. gfortran: fatal error: cannot read spec file 'libgomp.spec': No such file or directory Aha. Thanks! — I am in principle aware of it, but tend to forget it from time to time, especially when only later turning a compile-time test into a runtime one … In principle, a compile-time only check would enough (as with the C testcase) if the alignment were visible in the dump. (It is, kind of, with C/C++, using alignof; but for Fortran it isn't. On the other hand, checking it at runtime ensures that it really works.) I already was about to 'git mv' the file into 'libgomp/testsuite/libgomp.fortran/' -- but then realized that we probably also should get rid of this local 'module omp_lib_kinds': Yes, if 'omp_lib_kinds.mod' is available, there is no point to define it locally. Tobias commit b95ad25f9c9376575dcde4bcb529d3ca31b27359 Author: Tobias Burnus Date: Mon Oct 7 23:57:42 2024 +0200 Move gfortran.dg/gomp/allocate-static.f90 to libgomp.fortran/ The testcase was turned into a 'dg-do run' check to check for the alignment, but this only works in testsuite/gfortran.dg, causing link errors for out-of-tree testing. The test was added in r15-4104-ga8caeaacf499d5. gcc/testsuite/: * gfortran.dg/gomp/allocate-static.f90: Move to libgomp/testsuite/. libgomp/: * testsuite/libgomp.fortran/allocate-static.f90: Moved from gcc/testsuite/ as it is a dg-do run test; use real omp_lib_kinds instead of local definition --- .../testsuite/libgomp.fortran}/allocate-static.f90 | 28 -- 1 file changed, 28 deletions(-) diff --git a/gcc/testsuite/gfortran.dg/gomp/allocate-static.f90 b/libgomp/testsuite/libgomp.fortran/allocate-static.f90 similarity index 50% rename from gcc/testsuite/gfortran.dg/gomp/allocate-static.f90 rename to libgomp/testsuite/libgomp.fortran/allocate-static.f90 index e43dae5793f..2789e39e19b 100644 --- a/gcc/testsuite/gfortran.dg/gomp/allocate-static.f90 +++ b/libgomp/testsuite/libgomp.fortran/allocate-static.f90 @@ -1,31 +1,3 @@ -! { dg-do run } - -module omp_lib_kinds - use iso_c_binding, only: c_int, c_intptr_t - implicit none - private :: c_int, c_intptr_t - integer, parameter :: omp_allocator_handle_kind = c_intptr_t - - integer (kind=omp_allocator_handle_kind), & - parameter :: omp_null_allocator = 0 - integer (kind=omp_allocator_handle_kind), & - parameter :: omp_default_mem_alloc = 1 - integer (kind=omp_allocator_handle_kind), & - parameter :: omp_large_cap_mem_alloc = 2 - integer (kind=omp_allocator_handle_kind), & - parameter :: omp_const_mem_alloc = 3 - integer (kind=omp_allocator_handle_kind), & - parameter :: omp_high_bw_mem_alloc = 4 - integer (kind=omp_allocator_handle_kind), & - parameter :: omp_low_lat_mem_alloc = 5 - integer (kind=omp_allocator_handle_kind), & - parameter :: omp_cgroup_mem_alloc = 6 - integer (kind=omp_allocator_handle_kind), & - parameter :: omp_pteam_mem_alloc = 7 - integer (kind=omp_allocator_handle_kind), & - parameter :: omp_thread_mem_alloc = 8 -end module - module m use iso_c_binding, only: c_intptr_t use omp_lib_kinds, only: omp_default_mem_alloc
[committed] gcc/testsuite/g++.dg/gomp/append-args-8.C: Fix scan-dump-tree (was: [Linaro-TCWG-CI] gcc-15-8972-g7e286b56545: 3 regressions on aarch64)
The tree dump had bogus tailing numbers: interop.[0-9]+3, interop.[0-9]+2 This happened to work with x86-64 (-m32, -m64) but not with aarch64. I committed inr15-9033-ge0886d8ad4c519 the obvious fix: remove the 3 and 2 after the '+' Tobias ci_not...@linaro.org wrote: In gcc_check master-aarch64, after: | commit gcc-15-8972-g7e286b56545 We track this bug report underhttps://linaro.atlassian.net/browse/GNU-1554. Please let us know if you have a fix.commit e0886d8ad4c51919c349d0b31f2bec3acbc79e14 Author: Tobias Burnus Date: Sun Mar 30 09:55:29 2025 +0200 gcc/testsuite/g++.dg/gomp/append-args-8.C: Fix scan-dump-tree gcc/testsuite/ChangeLog: * g++.dg/gomp/append-args-8.C: Remove bogus '3' after \.\[0-9\]+ pattern. --- gcc/testsuite/g++.dg/gomp/append-args-8.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/testsuite/g++.dg/gomp/append-args-8.C b/gcc/testsuite/g++.dg/gomp/append-args-8.C index 7fbbfa88b88..786a2b3dc57 100644 --- a/gcc/testsuite/g++.dg/gomp/append-args-8.C +++ b/gcc/testsuite/g++.dg/gomp/append-args-8.C @@ -89,5 +89,5 @@ test (int *a, int *b) /* { dg-final { scan-tree-dump-times "__builtin_GOMP_interop \\(-5, 0, 0B, 0B, 0B, 0, 0B, 3, interopobjs\.\[0-9\]+, 0, 0B\\);" 1 "gimple" } } */ -/* { dg-final { scan-tree-dump-times "repl3 \\(a, interop\.\[0-9\]+3, interop\.\[0-9\]+2, interop\.\[0-9\]+, 1, 2, \"abc\"\\);" 1 "gimple" } } */ +/* { dg-final { scan-tree-dump-times "repl3 \\(a, interop\.\[0-9\]+, interop\.\[0-9\]+, interop\.\[0-9\]+, 1, 2, \"abc\"\\);" 1 "gimple" } } */ /* { dg-final { scan-tree-dump-times "__builtin_GOMP_interop \\(-5, 3, interopobjs\.\[0-9\]+, tgt_tgtsync\.\[0-9\]+, pref_type\.\[0-9\]+, 0, 0B, 0, 0B, 0, 0B\\);" 1 "gimple" } } */