https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112937
Bug ID: 112937
Summary: [14 Regression] GCN: FAILs due to unconditional
'f->use_flat_addressing = true;'
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Keywords: testsuite-fail
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: tschwinge at gcc dot gnu.org
CC: ams at gcc dot gnu.org, jules at gcc dot gnu.org
Target Milestone: ---
Target: GCN
The unconditional GCN 'f->use_flat_addressing = true;' applied as part of
commit r14-6226-ge7d6c277fa28c0b9b621d23c471e0388d2912644 "amdgcn, libgomp:
low-latency allocator" is causing a few regressions for GCN target (not
offloading) testing (tested '-march=gfx906', '-march=gfx90a'):
C:
[-PASS:-]{+FAIL:+} gcc.dg/pr64935-1.c (test for excess errors)
xgcc: error: [...]/gcc.dg/pr64935-1.c: '-fcompare-debug' failure (length)
Fortran:
PASS: gfortran.dg/coarray/fail_image_2.f08 -fcoarray=single -O2 (test for
excess errors)
[-PASS:-]{+FAIL:+} gfortran.dg/coarray/fail_image_2.f08 -fcoarray=single
-O2 execution test
PASS: gfortran.dg/team_change_1.f90 -O0 (test for excess errors)
[-PASS:-]{+FAIL:+} gfortran.dg/team_change_1.f90 -O0 execution test
[Etc.]
PASS: gfortran.dg/team_end_1.f90 -O0 (test for excess errors)
[-PASS:-]{+FAIL:+} gfortran.dg/team_end_1.f90 -O0 execution test
[Etc.]
PASS: gfortran.dg/team_form_1.f90 -O0 (test for excess errors)
[-PASS:-]{+FAIL:+} gfortran.dg/team_form_1.f90 -O0 execution test
[Etc.]
PASS: gfortran.dg/team_number_1.f90 -O0 (test for excess errors)
[-PASS:-]{+FAIL:+} gfortran.dg/team_number_1.f90 -O0 execution test
[Etc.]
These execution test FAILs are generally of the form:
Memory access fault by GPU node-2 (Agent handle: 0x20a1d40) on address
0x7f5600000000. Reason: Page not present or supervisor privilege.
Additionally, I'm seeing the following in my libstdc++ enablement tree:
PASS: std/ranges/iota/max_size_type.cc -std=gnu++20 (test for excess
errors)
{+WARNING: std/ranges/iota/max_size_type.cc -std=gnu++20 execution test
program timed out.+}
[-PASS:-]{+FAIL:+} std/ranges/iota/max_size_type.cc -std=gnu++20 execution
test
PASS: std/ranges/iota/max_size_type.cc -std=gnu++26 (test for excess
errors)
{+WARNING: std/ranges/iota/max_size_type.cc -std=gnu++26 execution test
program timed out.+}
[-PASS:-]{+FAIL:+} std/ranges/iota/max_size_type.cc -std=gnu++26 execution
test
(I guess I could provide pre-processed files for those if you'd like to
reproduce.)
To restore the Fortran test cases, just reverting the GCN back end change is
not sufficient: also need to rebuild GCN target libraries. (That is, the GCN
back end change does affect code generated for GCN target libraries.)