Created attachment 52061 [details] diff -u o5cia6mf.*.gkd g++ 12.0.0 20211219 snapshot (g:fcbf94a5be9e0c1ecad92da773a6632b86b7f70a) fails -fcompare-debug check when compiling the following testcase w/, extracted from gcc/testsuite/c-c++-common/goacc/nesting-1.c, w/ -fopenacc --param openacc-kernels=decompose: extern int i; void f_acc_kernels (void) { #pragma acc kernels { #pragma acc loop for (i = 0; i < 2; ++i) ; } } % x86_64-unknown-linux-gnu-g++-12.0.0 -O1 -fcompare-debug -fopenacc --param openacc-kernels=decompose -c o5cia6mf.c x86_64-unknown-linux-gnu-g++-12.0.0: error: o5cia6mf.c: '-fcompare-debug' failure (length) Diff between two gkd files attached. I can reproduce the issue only w/ C++ front-end.
void foo () { + # DEBUG BEGIN_STMT #pragma omp target oacc_kernels { int i.0; + # DEBUG BEGIN_STMT + # DEBUG BEGIN_STMT #pragma acc loop private(i.0) private(i) for (i.0 = 0; i.0 < 2; i.0 = i.0 + 1) { i = i.0; + # DEBUG BEGIN_STMT } } } difference at gimplification time is ok, but void foo () { + # DEBUG BEGIN_STMT #pragma omp target oacc_data_kernels { try @@ -10,12 +11,18 @@ void foo () { int i.0; + #pragma omp target oacc_parallel_kernels_gang_single async(-1) num_gangs(1) + { + # DEBUG BEGIN_STMT + # DEBUG BEGIN_STMT + } #pragma omp target oacc_kernels async(-1) { #pragma acc loop private(i.0) private(i) for (i.0 = 0; i.0 < 2; i.0 = i.0 + 1) { i = i.0; + # DEBUG BEGIN_STMT } } __builtin_GOACC_wait (-2, 0); from omp_oacc_kernels_decompose is not. Debug stmts shouldn't affect code-generation decisions.
Started with r11-8242-g3395dfc4da8ad1fc.
The master branch has been updated by Thomas Schwinge <tschwinge@gcc.gnu.org>: https://gcc.gnu.org/g:c14ea6a72fb1ae66e3d32ac8329558497c6e4403 commit r12-7478-gc14ea6a72fb1ae66e3d32ac8329558497c6e4403 Author: Thomas Schwinge <thomas@codesourcery.com> Date: Wed Jan 19 14:04:42 2022 +0100 Catch 'GIMPLE_DEBUG' misbehavior in OpenACC 'kernels' decomposition [PR100400, PR103836, PR104061] Actually fixing it is a separate task, but it seems prudent to at least catch it, and document via a few test cases. gcc/ PR middle-end/100400 PR middle-end/103836 PR middle-end/104061 * omp-oacc-kernels-decompose.cc (decompose_kernels_region_body): Catch 'GIMPLE_DEBUG'. gcc/testsuite/ PR middle-end/100400 PR middle-end/103836 PR middle-end/104061 * c-c++-common/goacc/kernels-decompose-pr100400-1-1.c: New. * c-c++-common/goacc/kernels-decompose-pr100400-1-2.c: New. * c-c++-common/goacc/kernels-decompose-pr100400-1-3.c: New. * c-c++-common/goacc/kernels-decompose-pr100400-1-4.c: New. * c-c++-common/goacc/kernels-decompose-pr103836-1-1.c: New. * c-c++-common/goacc/kernels-decompose-pr103836-1-2.c: New. * c-c++-common/goacc/kernels-decompose-pr103836-1-3.c: New. * c-c++-common/goacc/kernels-decompose-pr103836-1-4.c: New. * c-c++-common/goacc/kernels-decompose-pr104061-1-1.c: New. * c-c++-common/goacc/kernels-decompose-pr104061-1-2.c: New. * c-c++-common/goacc/kernels-decompose-pr104061-1-3.c: New. * c-c++-common/goacc/kernels-decompose-pr104061-1-4.c: New.