Hi Andrew!
On 2024-08-08T13:50:17+0000, Andrew Stubbs <[email protected]> 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.
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
Grüße
Thomas
> This patch has been committed to mainline and will be pushed to the OG14
> branch shortly.
>
> Andrew
>
> gcc/ChangeLog:
>
> * config/gcn/gcn.cc (gcn_trampoline_init): Re-enable trampolines.
> ---
> gcc/config/gcn/gcn.cc | 5 -----
> 1 file changed, 5 deletions(-)
>
> diff --git a/gcc/config/gcn/gcn.cc b/gcc/config/gcn/gcn.cc
> index 00f2978559b..b22132de6ab 100644
> --- a/gcc/config/gcn/gcn.cc
> +++ b/gcc/config/gcn/gcn.cc
> @@ -3799,11 +3799,6 @@ gcn_asm_trampoline_template (FILE *f)
> static void
> gcn_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
> {
> - // FIXME
> - if (TARGET_GCN5_PLUS)
> - sorry ("nested function trampolines not supported on GCN5 due to"
> - " non-executable stacks");
> -
> emit_block_move (m_tramp, assemble_trampoline_template (),
> GEN_INT (TRAMPOLINE_SIZE), BLOCK_OP_NORMAL);
>
> --
> 2.45.2