Hi!
On 2026-07-01T16:55:21+0200, I wrote:
> On 2026-07-01T16:30:41+0200, I wrote:
>> On 2026-06-26T09:42:43-0700, Gio T <[email protected]> wrote:
>>> This patch refactors 'hashtab.h' from a prime-sized double-hash
>>> map to a power of two sized Robin Hood hashing regime. [...]
>>
>>
>>> The data structure was microbenchmarked [...]
>>
>> Curious what the effects on real-world code (benchmarks) is going to be?
>>
>>
>>> Built/tested x86_64-pc-linux-gnu.
>>
>> I've not reviewd your patch, but at least put it into my usual testing
>> trees, and
>
> I see libgomp test suite regressions as follows, testing on a system with
> NVIDIA GPU (didn't test AMD GPU code offloading, so far):
>
> PASS: libgomp.c/../libgomp.c-c++-common/declare-target-indirect-1.c (test
> for excess errors)
> [-PASS:-]{+FAIL:+}
> libgomp.c/../libgomp.c-c++-common/declare-target-indirect-1.c execution test
>
> PASS: libgomp.c/../libgomp.c-c++-common/declare-target-indirect-2.c (test
> for excess errors)
> [-PASS:-]{+FAIL:+}
> libgomp.c/../libgomp.c-c++-common/declare-target-indirect-2.c execution test
>
> PASS: libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-1.c
> (test for excess errors)
> [-PASS:-]{+FAIL:+}
> libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-1.c execution test
>
> PASS: libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-2.c
> (test for excess errors)
> [-PASS:-]{+FAIL:+}
> libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-2.c execution test
>
> PASS: libgomp.fortran/declare-target-indirect-1.f90 -O0 (test for
> excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90 -O0
> execution test
> PASS: libgomp.fortran/declare-target-indirect-1.f90 -O1 (test for
> excess errors)
> PASS: libgomp.fortran/declare-target-indirect-1.f90 -O1 execution test
> PASS: libgomp.fortran/declare-target-indirect-1.f90 -O2 (test for
> excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90 -O2
> execution test
> PASS: libgomp.fortran/declare-target-indirect-1.f90 -O3
> -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions
> (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90 -O3
> -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions
> execution test
> PASS: libgomp.fortran/declare-target-indirect-1.f90 -O3 -g (test for
> excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90 -O3 -g
> execution test
> PASS: libgomp.fortran/declare-target-indirect-1.f90 -Os (test for
> excess errors)
> PASS: libgomp.fortran/declare-target-indirect-1.f90 -Os execution test
>
> PASS: libgomp.fortran/declare-target-indirect-2.f90 -O0 (test for
> excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90 -O0
> execution test
> PASS: libgomp.fortran/declare-target-indirect-2.f90 -O1 (test for
> excess errors)
> PASS: libgomp.fortran/declare-target-indirect-2.f90 -O1 execution test
> PASS: libgomp.fortran/declare-target-indirect-2.f90 -O2 (test for
> excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90 -O2
> execution test
> PASS: libgomp.fortran/declare-target-indirect-2.f90 -O3
> -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions
> (test for excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90 -O3
> -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions
> execution test
> PASS: libgomp.fortran/declare-target-indirect-2.f90 -O3 -g (test for
> excess errors)
> [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90 -O3 -g
> execution test
> PASS: libgomp.fortran/declare-target-indirect-2.f90 -Os (test for
> excess errors)
> PASS: libgomp.fortran/declare-target-indirect-2.f90 -Os execution test
>
> These are:
>
> libgomp: cuCtxSynchronize error: an illegal memory access was encountered
Similar, plus a few more libgomp test suite regressions on a system with
AMD GPU:
PASS: libgomp.c/../libgomp.c-c++-common/declare-target-indirect-1.c (test
for excess errors)
[-PASS:-]{+FAIL:+}
libgomp.c/../libgomp.c-c++-common/declare-target-indirect-1.c execution test
PASS: libgomp.c/../libgomp.c-c++-common/declare-target-indirect-2.c (test
for excess errors)
[-PASS:-]{+FAIL:+}
libgomp.c/../libgomp.c-c++-common/declare-target-indirect-2.c execution test
PASS: libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-1.c (test
for excess errors)
[-PASS:-]{+FAIL:+}
libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-1.c execution test
PASS: libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-2.c (test
for excess errors)
[-PASS:-]{+FAIL:+}
libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-2.c execution test
PASS: libgomp.fortran/declare-target-indirect-1.f90 -O0 (test for excess
errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90 -O0
execution test
PASS: libgomp.fortran/declare-target-indirect-1.f90 -O1 (test for excess
errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90 -O1
execution test
PASS: libgomp.fortran/declare-target-indirect-1.f90 -O2 (test for excess
errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90 -O2
execution test
PASS: libgomp.fortran/declare-target-indirect-1.f90 -O3
-fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions
(test for excess errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90 -O3
-fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions
execution test
PASS: libgomp.fortran/declare-target-indirect-1.f90 -O3 -g (test for
excess errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90 -O3 -g
execution test
PASS: libgomp.fortran/declare-target-indirect-1.f90 -Os (test for excess
errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90 -Os
execution test
PASS: libgomp.fortran/declare-target-indirect-2.f90 -O0 (test for excess
errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90 -O0
execution test
PASS: libgomp.fortran/declare-target-indirect-2.f90 -O1 (test for excess
errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90 -O1
execution test
PASS: libgomp.fortran/declare-target-indirect-2.f90 -O2 (test for excess
errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90 -O2
execution test
PASS: libgomp.fortran/declare-target-indirect-2.f90 -O3
-fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions
(test for excess errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90 -O3
-fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions
execution test
PASS: libgomp.fortran/declare-target-indirect-2.f90 -O3 -g (test for
excess errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90 -O3 -g
execution test
PASS: libgomp.fortran/declare-target-indirect-2.f90 -Os (test for excess
errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90 -Os
execution test
PASS: libgomp.fortran/declare-target-indirect-3.f90 -O0 (test for excess
errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-3.f90 -O0
execution test
PASS: libgomp.fortran/declare-target-indirect-3.f90 -O1 (test for excess
errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-3.f90 -O1
execution test
PASS: libgomp.fortran/declare-target-indirect-3.f90 -O2 (test for excess
errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-3.f90 -O2
execution test
PASS: libgomp.fortran/declare-target-indirect-3.f90 -O3
-fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions
(test for excess errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-3.f90 -O3
-fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions
execution test
PASS: libgomp.fortran/declare-target-indirect-3.f90 -O3 -g (test for
excess errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-3.f90 -O3 -g
execution test
PASS: libgomp.fortran/declare-target-indirect-3.f90 -Os (test for excess
errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-3.f90 -Os
execution test
PASS: libgomp.fortran/declare-target-indirect-4.f90 -O (test for excess
errors)
[-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-4.f90 -O
execution test
PASS: libgomp.fortran/declare-target-indirect-4.f90 -O scan-tree-dump
gimple "#pragma omp parallel shared\\(i\\) if\\(0\\) default\\(none\\)
firstprivate\\(g\\)"
PASS: libgomp.fortran/declare-target-indirect-4.f90 -O scan-tree-dump
gimple "#pragma omp target num_teams\\(-2\\) thread_limit\\(0\\)
firstprivate\\(h\\) map\\(from:j \\[len: 4\\]\\) defaultmap\\(none\\)"
These are:
Memory access fault by GPU node-2 (Agent handle: 0x224bfaf0) on address
0x401000. Reason: Page not present or supervisor privilege.
Grüße
Thomas
> Grüße
> Thomas
>
>
>> see the build fail for 32-bit (x86_64 with '-m32'):
>>
>> In file included from ../../../source-gcc/libgomp/task.c:49:
>> ../../../source-gcc/libgomp/hashtab.h: In function ‘rup2’:
>> ../../../source-gcc/libgomp/hashtab.h:136:17: error: right shift count
>> >= width of type [-Werror=shift-count-overflow]
>> 136 | num |= (num >> 32);
>> | ^~
>>
>> In file included from ../../../source-gcc/libgomp/target.c:61:
>> [same]
>>
>>
>> Grüße
>> Thomas