]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fortran: Fix parse-dump-tree for OpenMP ALLOCATE clause
authorTobias Burnus <tobias@codesourcery.com>
Thu, 26 Oct 2023 09:23:31 +0000 (11:23 +0200)
committerTobias Burnus <tobias@codesourcery.com>
Thu, 26 Oct 2023 09:23:31 +0000 (11:23 +0200)
Commit r14-1301-gd64e8e1224708e added u2.allocator to gfc_omp_namelist
for better readability and to permit to use namelist->expr for code
like the following:
  !$omp allocators allocate(align(32) : dt%alloc_comp)
    allocate (dt%alloc_comp(5))
  !$omp allocate(dt%alloc_comp2) align(64)
    allocate (dt%alloc_comp2(10))
However, for the parse-tree dump the change was incomplete.

gcc/fortran/ChangeLog:

* dump-parse-tree.cc (show_omp_namelist): Fix dump of the allocator
modifier of OMP_LIST_ALLOCATE.

(cherry picked from commit 99e3214f582b08b69b11b53eb3fc73b0919ef4f1)

gcc/fortran/ChangeLog.omp
gcc/fortran/dump-parse-tree.cc

index 71098850548c6c0de39407e11eef3c7c46d9ebf2..2181e2b86edcc68a2079e684a1cd971405cb91a5 100644 (file)
@@ -1,3 +1,11 @@
+2023-10-26  Tobias Burnus  <tobias@codesourcery.com>
+
+       Backported from master:
+       2023-06-20  Tobias Burnus  <tobias@codesourcery.com>
+
+       * dump-parse-tree.cc (show_omp_namelist): Fix dump of the allocator
+       modifier of OMP_LIST_ALLOCATE.
+
 2023-10-26  Tobias Burnus  <tobias@codesourcery.com>
            Chung-Lin Tang  <cltang@codesourcery.com>
 
index 14d5ebdbb850fdac229bb19bd6c65716779f03f7..38c944a9c7d308ba0f6aa8b0724042871bbe8999 100644 (file)
@@ -1361,7 +1361,7 @@ show_omp_namelist (int list_type, gfc_omp_namelist *n)
        }
       if (list_type == OMP_LIST_ALLOCATE)
        {
-         if (n->expr)
+         if (n->u2.allocator)
            {
              fputs ("allocator(", dumpfile);
              show_expr (n->u2.allocator);
@@ -1375,9 +1375,12 @@ show_omp_namelist (int list_type, gfc_omp_namelist *n)
              show_expr (n->u.align);
              fputc (')', dumpfile);
            }
-         if (n->expr || n->u.align)
+         if (n->u2.allocator || n->u.align)
            fputc (':', dumpfile);
-         fputs (n->sym->name, dumpfile);
+         if (n->expr)
+           show_expr (n->expr);
+         else
+           fputs (n->sym->name, dumpfile);
          if (n->next)
            fputs (") ALLOCATE(", dumpfile);
          continue;