https://gcc.gnu.org/g:1bee3d91a026b0124320a55ce679181db3411dcd

commit 1bee3d91a026b0124320a55ce679181db3411dcd
Author: Tobias Burnus <tob...@codesourcery.com>
Date:   Fri Oct 21 15:31:25 2022 +0200

    omp-oacc-kernels-decompose.cc: fix -fcompare-debug with GIMPLE_DEBUG
    
    GIMPLE_DEBUG were put in a parallel region of its own, which is not
    only pointless but also breaks -fcompare-debug. With this commit,
    they are handled like simple assignments: those placed are places
    into the same body as the loop such that only one parallel region
    remains as without debugging. This fixes the existing testcase
    libgomp.oacc-c-c++-common/kernels-loop-g.c.
    
    Note: GIMPLE_DEBUG are only accepted with -fcompare-debug; if they
    appear otherwise, decompose_kernels_region_body rejects them with
    a sorry (unchanged).
    
    gcc/
            * omp-oacc-kernels-decompose.cc (top_level_omp_for_in_stmt,
            decompose_kernels_region_body): Handle GIMPLE_DEBUG like
            simple assignment.

Diff:
---
 gcc/ChangeLog.omp                 | 6 ++++++
 gcc/omp-oacc-kernels-decompose.cc | 5 +++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp
index d7256902331..4eef9f49974 100644
--- a/gcc/ChangeLog.omp
+++ b/gcc/ChangeLog.omp
@@ -1,3 +1,9 @@
+2022-10-21  Tobias Burnus  <tob...@codesourcery.com>
+
+       * omp-oacc-kernels-decompose.cc (top_level_omp_for_in_stmt,
+       decompose_kernels_region_body): Handle GIMPLE_DEBUG like
+       simple assignment.
+
 2022-07-12  Andrew Stubbs  <a...@codesourcery.com>
 
        * gimple-loop-versioning.cc (loop_versioning::loop_versioning): Add
diff --git a/gcc/omp-oacc-kernels-decompose.cc 
b/gcc/omp-oacc-kernels-decompose.cc
index 4ed4b68f53f..ac76fc483ec 100644
--- a/gcc/omp-oacc-kernels-decompose.cc
+++ b/gcc/omp-oacc-kernels-decompose.cc
@@ -120,7 +120,8 @@ top_level_omp_for_in_stmt (gimple *stmt)
          for (gsi = gsi_start (body); !gsi_end_p (gsi); gsi_next (&gsi))
            {
              gimple *body_stmt = gsi_stmt (gsi);
-             if (gimple_code (body_stmt) == GIMPLE_ASSIGN)
+             if (gimple_code (body_stmt) == GIMPLE_ASSIGN
+                 || gimple_code (body_stmt) == GIMPLE_DEBUG)
                continue;
              else if (gimple_code (body_stmt) == GIMPLE_OMP_FOR
                       && gsi_one_before_end_p (gsi))
@@ -1363,7 +1364,7 @@ decompose_kernels_region_body (gimple *kernels_region, 
tree kernels_clauses)
            = (gimple_code (stmt) == GIMPLE_ASSIGN
               && TREE_CODE (gimple_assign_lhs (stmt)) == VAR_DECL
               && DECL_ARTIFICIAL (gimple_assign_lhs (stmt)));
-         if (!is_simple_assignment)
+         if (!is_simple_assignment && gimple_code (stmt) != GIMPLE_DEBUG)
            only_simple_assignments = false;
        }
     }

Reply via email to