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.)

Reply via email to