One has to admit that gfc_free_omp_namelist got a bit unhandy.

Solution pass the OMP_LIST_ enum value instead of a bunch of
booleans. The change has been split-off from Julian's mapper
patch, which otherwise had to add another boolean.

Contrary to his patch, it adds a name to the enum and uses
the enum; the argument is also mandatory to make the caller
think whether it is needed or not. And it also replaces
0 byOMP_LIST_FIRST (=OMP_LIST_PRIVATE) to avoid magic numbers.
Julian's patch is part of commit on OG14 (devel/omp/gcc-14)
  015cb4002d6 OpenMP: Fortran "!$omp declare mapper" support
aliashttps://gcc.gnu.org/g:015cb4002d6 - originally put on
OG13 as 6d82b6c4156 Jun 30, 2023.(Post-commit) comments, remarks, suggestions? Committed as r17-279-g357207648f16ee Tobias PS: Next step is to add the Fortran parser support parts of Julian's declare-mapper commit.
commit 357207648f16eeb6768e081d320bf131a33316fc
Author: Tobias Burnus <[email protected]>
Date:   Sat May 2 22:25:48 2026 +0200

    Fortran/OpenMP: cleanup gfc_free_omp_namelist
    
    Move the logic to deduce what needs to be freed from the
    caller to the callee by passing the OMP_LIST_... enum value
    instead of multiple bool arguments to gfc_free_omp_namelist.
    
    Additionally, add the name 'gfc_omp_list_type' to the existing
    OMP_LIST_... enum values and OMP_LIST_NONE (== OMP_LIST_NUM)
    as special value.
    
    As an enum is available, use it properly and replace 0 by
    OMP_LIST_FIRST in the list walks.
    
    gcc/fortran/ChangeLog:
    
            * gfortran.h (enum gfc_omp_list_type): Add this name
            to the existing OMP_LIST... enum; add OMP_LIST_NONE.
            (gfc_free_omp_namelist): Take that enum as arg instead of bool args.
            * match.cc (gfc_free_omp_namelist): Update.
            * openmp.cc (gfc_free_omp_clauses, gfc_free_omp_declare_variant_list,
            gfc_match_omp_clause_reduction, gfc_match_omp_clauses,
            gfc_match_omp_allocate, gfc_match_omp_flush,
            gfc_match_omp_declare_target, resolve_omp_clauses,
            gfc_resolve_omp_parallel_blocks, resolve_omp_do,
            gfc_resolve_oacc_blocks, gfc_resolve_oacc_declare): Update
            gfc_free_omp_namelist call and used enum type instead of
            int.
            * st.cc (gfc_free_statement): Likewise.
    
    Co-Authored-By: Julian Brown <[email protected]>

 gcc/fortran/gfortran.h |  7 ++--
 gcc/fortran/match.cc   |  9 +++--
 gcc/fortran/openmp.cc  | 95 ++++++++++++++++++++++++++------------------------
 gcc/fortran/st.cc      |  2 +-
 4 files changed, 61 insertions(+), 52 deletions(-)

Reply via email to