On 09/08/2024 07:53, Thomas Schwinge wrote:
Hi Andrew!
On 2024-08-08T13:50:17+0000, Andrew Stubbs <a...@baylibre.com> wrote:
Previously, trampolines worked on GCN3 devices, but the newer GCN5
devices had different permissions on the stack memory space we were
using.
That changed when we added the reverse-offload features because we
switched from using the "private" memory space to using a regular memory
allocation.
The execute permissions on this new space permit trampolines to work
just as they did before.
ACK; I see a lot of UNSUPPORTED -> PASS progressions (tested
'-march=gfx908', '-march=gfx1100').
Just two non-good ones:
[-UNSUPPORTED:-]{+FAIL:+} gcc.dg/20050607-1.c {+(test for excess errors)+}
[...]/gcc.dg/20050607-1.c: In function 'foo':
[...]/gcc.dg/20050607-1.c:7:5: warning: padding struct size to alignment
boundary with 4 bytes [-Wpadded]
..., which, as I understand the test case is what should *not* be
happening.
This must have always been a problem for GCN3 devices.
I've just pushed a patch to fix it (by adding the padding explicitly).
And the other:
[-FAIL:-]{+PASS:+} gfortran.dg/optional_absent_8.f90 -O0 (test for
excess errors)
[-UNRESOLVED:-]{+FAIL:+} gfortran.dg/optional_absent_8.f90 -O0
[-compilation failed to produce executable-]{+execution test+}
PASS: gfortran.dg/optional_absent_8.f90 -O1 (test for excess errors)
PASS: gfortran.dg/optional_absent_8.f90 -O1 execution test
PASS: gfortran.dg/optional_absent_8.f90 -O2 (test for excess errors)
STOP 11
This one is more difficult to figure out. An execution failure only at
-O0 may have a number of causes not actually related to the trampolines.
The fortran "present" operator for optional arguments seems to be
malfunctioning, but I'm no idea how or why (nor am I likely to before
vacation).
Andrew