Hi!

On 2020-11-21T10:50:10-0500, David Edelsohn <dje....@gmail.com> wrote:
> I see
>
> "during GIMPLE pass: omplower"
>
> message for kernels-decompose-ice-2.c.  kernels-decompose-ice-1.c
> explicitly prunes that output, but kernels-decompose-ice-2.c does not.
> Is there a reason that the second testcase does not prune that output
> or can we add it?

So, the expectation (as verified by my x86_64-pc-linux-gnu and
powerpc64le-unknown-linux-gnu testing) is that
'c-c++-common/goacc/kernels-decompose-ice-1.c' (currently) runs into an
ICE "during GIMPLE pass: omplower", and
'c-c++-common/goacc/kernels-decompose-ice-2.c' (currently) runs into an
ICE "during GIMPLE pass: omp_oacc_kernels_decompose".

Now, you're reporting that for the latter testcase you're instead also
seeing an ICE "during GIMPLE pass: omplower".  Can you please show the
full ICE report/backtrace, so that we verify that it's not yet another
separate issue?  Maybe the AIX system configuration (ABI?)
mandates/causes some slight difference in how front ends set attributes
such as 'TREE_ADDRESSABLE' on DECLs, which 'omp_oacc_kernels_decompose'
(currently) is sensitive to (hence the ICEs).  If you confirm that for
'c-c++-common/goacc/kernels-decompose-ice-2.c' you're seeing the same
ICE "during GIMPLE pass: omplower" as seen for
'c-c++-common/goacc/kernels-decompose-ice-1.c', then it shall be fine to
simply add 'dg-prune-output "during GIMPLE pass: omplower"' to
'c-c++-common/goacc/kernels-decompose-ice-2.c', too.  (Please do it once
you've verified/tested that, or I can do it later.)

That said, I shall soon work on resolving these ICEs, so holding your
breath until that happens would be another option.  ;-)


Then, for the Tcl issue:

> On Tue, Nov 17, 2020 at 8:18 PM David Edelsohn <dje....@gmail.com> wrote:
>> The patch resolves the "no such variable" error message [...]
>>
>> I installed Tcl 8.6 with Expect 5.45.  This removes the "no such
>> variable" error messages for C and C++ test cases

OK, thanks for confirming that.

>> but they still
>> occur for Fortran.

(That's unexpected; it's the very same testsuite/Tcl constructs.  Maybe
just a manual testing glitch?)

>> I guess that the patch is necessary because there seems to be
>> something else still behaving differently on AIX.
>>
>> Any insights?

>> On Tue, Nov 17, 2020 at 10:03 AM David Edelsohn <dje....@gmail.com> wrote:
>> > The standard version of Tcl installed on AIX currently is Tcl 8.4.

Aha, thanks for confirming -- that indeed does explain the issue, good.

>> > I'll see if I can have a newer version on the side.

That's good for testing/confirming (as noted above), but I don't want to
make Tcl 8.5+ a requirement just because of these testcases, so...

>> > The patch resolves the "no such variable" error message.  (Great!
>> > Thanks!)

... I pushed "[testsuite] Avoid Tcl 8.5-specific behavior" to master
branch in commit f72175357d04b0e71d2043be48551d7904a233b6, see attached.


Grüße
 Thomas


>> > On Mon, Nov 16, 2020 at 11:46 AM Thomas Schwinge
>> > <tho...@codesourcery.com> wrote:
>> > >
>> > > Hi David!
>> > >
>> > > While you were writing your email, I've also been busy:
>> > >
>> > > On 2020-11-16T11:32:46-0500, David Edelsohn <dje....@gmail.com> wrote:
>> > > > On Mon, Nov 16, 2020 at 9:16 AM Thomas Schwinge 
>> > > > <tho...@codesourcery.com> wrote:
>> > > >> On 2020-11-15T15:47:15-0500, David Edelsohn <dje....@gmail.com> wrote:
>> > > >> > I am seeing a number of new failures on AIX related to the OpenACC
>> > > >> > kernels patches.
>> > > >> >
>> > > >> > c-c++-common/goacc/kernels-decompose-1.c
>> > > >> > c-c++-common/goacc/kernels-decompose-2.c
>> > > >> > gfortran.dg/goacc/kernels-decompose-1.f95
>> > > >> > gfortran.dg/goacc/kernels-decompose-2.f95
>> > > >> > libgomp.oacc-c++/../libgomp.oacc-c-c++-common/kernels-decompose-1.c
>> > > >> > libgomp.oacc-fortran/pr94358-1.f90
>> > > >>
>> > > >> I suppose what you're asking about is what appears in
>> > > >> <gcc-testresu...@gcc.gnu.org> reports as:
>> > > >>
>> > > >>     ERROR: c-c++-common/goacc/kernels-decompose-1.c: can't read 
>> > > >> "c_loop_i": no such variable for " dg-line 24 l_loop_i[incr c_loop_i] 
>> > > >> "
>> > > >>     UNRESOLVED: c-c++-common/goacc/kernels-decompose-1.c: can't read 
>> > > >> "c_loop_i": no such variable for " dg-line 24 l_loop_i[incr c_loop_i] 
>> > > >> "
>> > > >>
>> > > >> Etc.
>> > >
>> > > In the mean time, I did remember that weeks ago, I had noticed this
>> > > following "detail": on <https://www.tcl.tk/man/tcl8.5/TclCmd/incr.htm> we
>> > > read that "Starting with the Tcl 8.5 release, the variable 'varName'
>> > > passed to 'incr' may be unset, and in that case, it will be set to
>> > > [...]".  Tcl 8.5 has been released in 2007.
>> > >
>> > > Per 'gcc/doc/install.texi' we require:
>> > >
>> > >     @item DejaGnu 1.4.4
>> > >     @itemx Expect
>> > >     @itemx Tcl
>> > >
>> > >     Necessary to run the GCC testsuite; [...]
>> > >
>> > > DejaGnu has been released in 2004 (so cannot have required Tcl 8.5
>> > > released in 2007).
>> > >
>> > > >> However, per the reports posted there, these really only (!) appear to
>> > > >> fail for your "Native configuration is powerpc-ibm-aix7.2.3.0" 
>> > > >> testing,
>> > > >> strange.  Which versions of DejaGnu and Tcl are used?
>> > > >
>> > > > For my internal tester DejaGNU reports the following:
>> > > >
>> > > > Expect version is 5.42.1
>> > > > Tcl version is 8.4
>> > > > Framework version is 1.5.3
>> > >
>> > > There we go: you're on Tcl 8.4.  ;-D
>> > >
>> > > >> On <https://cfarm.tetaneutral.net/machines/list/> I see there are AIX
>> > > >> systems gcc111, gcc119 -- maybe I'll have luck reproducing the issue
>> > > >> there.
>> > >
>> > > On these, we've got:
>> > >
>> > >     tschwinge@gcc111:[/home/tschwinge]/opt/freeware/bin/runtest --version
>> > >     WARNING: Couldn't find the global config file.
>> > >     Expect version is       5.45.4
>> > >     Tcl version is          8.6
>> > >     Framework version is    1.4.4
>> > >
>> > >     tschwinge@gcc119:[/home/tschwinge]/opt/freeware/bin/runtest --version
>> > >     WARNING: Couldn't find the global config file.
>> > >     Expect version is       5.44.1.15
>> > >     Tcl version is          8.5
>> > >     Framework version is    1.5.3
>> > >
>> > > ..., so can't (easily) be used to reproduce the issue.  (... but it
>> > > wouldn't be specific to AIX, anyway.)
>> > >
>> > > Before I spend time on building/verifying with Tcl 8.4: are you able to
>> > > give the attached patch "[testsuite] Avoid Tcl 8.5-specific behavior" a
>> > > try?
>> > >
>> > >
>> > > Grüße
>> > >  Thomas
>> > >
>> > >
>> > > >> Admittedly, using Tcl code inside DejaGnu directives is not most 
>> > > >> common,
>> > > >> but it does make sense conceptually (at least to me), and reportedly 
>> > > >> does
>> > > >> work with a large number of DejaGnu/Tcl versions combinations.
>> > > >>
>> > > >> > Looking at the testsuite logs I see:
>> > > >> >
>> > > >> > fatal error: GCC is not configured to support amdgcn-amdhsa as 
>> > > >> > offload target
>> > > >>
>> > > >> That one's not actually related to the new OpenACC 'kernels' 
>> > > >> testcases:
>> > > >> it's just the testsuite harness checking whether GCN offloading is
>> > > >> configured.  (See <https://gcc.gnu.org/PR88920> "GCC is not 
>> > > >> configured to
>> > > >> support amdgcn-unknown-amdhsa as offload target"; this should one 
>> > > >> appear
>> > > >> once per testsuite.)
>> > > >>
>> > > >> > I don't know why this is different from the other OpenACC tests.
>> > > >>
>> > > >> It's not.  At least not intentionally.
>> > > >
>> > > > I don't see any obvious difference in the style of the additional
>> > > > options for the kernels testcases versus others, although it
>> > > > specifically is using an option for that test.  I only see the "GCC is
>> > > > not configured ... amdhsa" for those tests.
>> > > >
>> > > >>
>> > > >> > How
>> > > >> > should these tests be skipped or adjusted to not fail on other
>> > > >> > systems?
>> > > >>
>> > > >> They are expected to work fine on all systems; they're not specific to
>> > > >> actual code offloading.  So if something FAILs, we shall resolve it.
>> > > >
>> > > > Thanks, David


-----------------
Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany
Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander 
Walter
>From f72175357d04b0e71d2043be48551d7904a233b6 Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <tho...@codesourcery.com>
Date: Mon, 16 Nov 2020 17:37:06 +0100
Subject: [PATCH] [testsuite] Avoid Tcl 8.5-specific behavior

	gcc/
	* doc/install.texi (Prerequisites) <Tcl>: Add comment.
	gcc/testsuite/
	* c-c++-common/goacc/kernels-decompose-1.c: Avoid Tcl 8.5-specific
	behavior.
	* c-c++-common/goacc/kernels-decompose-2.c: Likewise.
	* gfortran.dg/goacc/kernels-decompose-1.f95: Likewise.
	* gfortran.dg/goacc/kernels-decompose-2.f95: Likewise.
	libgomp/
	* testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c: Avoid
	Tcl 8.5-specific behavior.
	* testsuite/libgomp.oacc-fortran/pr94358-1.f90: Likewise.

Reported-by: David Edelsohn <dje....@gmail.com>
---
 gcc/doc/install.texi                                      | 3 +++
 gcc/testsuite/c-c++-common/goacc/kernels-decompose-1.c    | 8 ++++++++
 gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c    | 8 ++++++++
 gcc/testsuite/gfortran.dg/goacc/kernels-decompose-1.f95   | 8 ++++++++
 gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95   | 8 ++++++++
 .../libgomp.oacc-c-c++-common/kernels-decompose-1.c       | 8 ++++++++
 libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90      | 8 ++++++++
 7 files changed, 51 insertions(+)

diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index cbfe859310a..8c55da373f8 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -464,6 +464,9 @@ Necessary when modifying @command{gperf} input files, e.g.@:
 @item DejaGnu 1.4.4
 @itemx Expect
 @itemx Tcl
+@c Once Tcl 8.5 or higher is required, remove any obsolete
+@c compatibility workarounds:
+@c     git grep 'compatibility with earlier Tcl releases'
 
 Necessary to run the GCC testsuite; see the section on testing for
 details.
diff --git a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-1.c b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-1.c
index 92db33273eb..e906443cceb 100644
--- a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-1.c
+++ b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-1.c
@@ -7,6 +7,14 @@
 
 /* See also '../../gfortran.dg/goacc/kernels-decompose-1.f95'.  */
 
+/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
+   passed to 'incr' may be unset, and in that case, it will be set to [...]",
+   so to maintain compatibility with earlier Tcl releases, we manually
+   initialize counter variables:
+   { dg-line l_dummy[variable c_loop_i 0] }
+   { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
+   "WARNING: dg-line var l_dummy defined, but not used".  */
+
 #define N 1024
 
 unsigned int a[N];
diff --git a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c
index ec6c4af92aa..ec0f75c4a61 100644
--- a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c
+++ b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c
@@ -6,6 +6,14 @@
 
 /* See also '../../gfortran.dg/goacc/kernels-decompose-2.f95'.  */
 
+/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
+   passed to 'incr' may be unset, and in that case, it will be set to [...]",
+   so to maintain compatibility with earlier Tcl releases, we manually
+   initialize counter variables:
+   { dg-line l_dummy[variable c_loop_i 0 c_loop_j 0 c_loop_k 0 c_part 0] }
+   { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
+   "WARNING: dg-line var l_dummy defined, but not used".  */
+
 #pragma acc routine gang
 extern int
 f_g (int);
diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-1.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-1.f95
index 95a78623ebf..7e513f84083 100644
--- a/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-1.f95
+++ b/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-1.f95
@@ -7,6 +7,14 @@
 
 ! See also '../../c-c++-common/goacc/kernels-decompose-1.c'.
 
+! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
+! passed to 'incr' may be unset, and in that case, it will be set to [...]",
+! so to maintain compatibility with earlier Tcl releases, we manually
+! initialize counter variables:
+! { dg-line l_dummy[variable c_loop_i 0] }
+! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
+! "WARNING: dg-line var l_dummy defined, but not used".
+
 program main
   implicit none
   integer, parameter         :: N = 1024
diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95
index 58d687d4a0c..22f65e5c694 100644
--- a/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95
+++ b/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95
@@ -6,6 +6,14 @@
 
 ! See also '../../c-c++-common/goacc/kernels-decompose-2.c'.
 
+! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
+! passed to 'incr' may be unset, and in that case, it will be set to [...]",
+! so to maintain compatibility with earlier Tcl releases, we manually
+! initialize counter variables:
+! { dg-line l_dummy[variable c_loop_i 0 c_loop_j 0 c_loop_k 0 c_part 0] }
+! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
+! "WARNING: dg-line var l_dummy defined, but not used".
+
 program main
   implicit none
 
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c
index fa8ae6c79cd..e76e4099f3a 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c
@@ -3,6 +3,14 @@
 /* { dg-additional-options "-fopt-info-omp-all" } */
 /* { dg-additional-options "-fopenacc-kernels=decompose" } */
 
+/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
+   passed to 'incr' may be unset, and in that case, it will be set to [...]",
+   so to maintain compatibility with earlier Tcl releases, we manually
+   initialize counter variables:
+   { dg-line l_dummy[variable c_loop_i 0] }
+   { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
+   "WARNING: dg-line var l_dummy defined, but not used".  */
+
 #undef NDEBUG
 #include <assert.h>
 
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90 b/libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90
index 82d8351f0e3..99a70418a4d 100644
--- a/libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90
+++ b/libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90
@@ -2,6 +2,14 @@
 ! { dg-additional-options "-fopt-info-omp-all" }
 ! { dg-additional-options "-fopenacc-kernels=decompose" }
 
+! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
+! passed to 'incr' may be unset, and in that case, it will be set to [...]",
+! so to maintain compatibility with earlier Tcl releases, we manually
+! initialize counter variables:
+! { dg-line l_dummy[variable c_loop_i 0] }
+! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
+! "WARNING: dg-line var l_dummy defined, but not used".
+
 subroutine kernel(lo, hi, a, b, c)
   implicit none
   integer :: lo, hi, i
-- 
2.17.1

Reply via email to