[committed] Fortran/OpenMP: cleanup gfc_free_omp_namelist

Tobias Burnus <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
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.
committed.diff (text/x-patch, 1.7 KB)
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(-)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.