This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [gomp4] backport parallel reduction changes
- From: Thomas Schwinge <thomas at codesourcery dot com>
- To: Cesar Philippidis <cesar at codesourcery dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 12 Apr 2016 10:09:03 +0200
- Subject: Re: [gomp4] backport parallel reduction changes
- Authentication-results: sourceware.org; auth=none
- References: <570C31FC dot 4060603 at codesourcery dot com>
Hi Cesar!
On Mon, 11 Apr 2016 16:23:40 -0700, Cesar Philippidis <cesar@codesourcery.com> wrote:
> This patch backports the reduction changes in trunk to gomp-4_0-branch.
Thanks!
> Prior to this patch, gomp-4_0-branch was having the gimplifier create a
> temporary variable for reference-typed reductions. That's no longer
> necessary with this patch.
>
> Besides for the reference reduction changes, this patch also addresses
> some problems with reductions in acc parallel directives. Specifically,
> private and firstprivate reductions are reported as errors now, so that
> resolves PR70357.
>
> Thomas, there's still some divergence between trunk and gomp-4_0-branch
> in the various FEs. Those changes are too late for trunk right now. I'll
> take a closer look at them later, but maybe we should drop them in
> gomp-4_0-branch.
ACK.
> I've applied this patch to gomp-4_0-branch.
I'm seeing:
XFAIL: gfortran.dg/goacc/combined-directives.f90 -O scan-tree-dump-times gimple "acc loop private.i. private.j. vector" 2
XFAIL: gfortran.dg/goacc/combined-directives.f90 -O scan-tree-dump-times gimple "acc loop private.i. private.j. worker" 2
XFAIL: gfortran.dg/goacc/combined-directives.f90 -O scan-tree-dump-times gimple "acc loop private.i. reduction..:y." 2
[-XFAIL:-]{+XPASS:+} gfortran.dg/goacc/combined-directives.f90 -O scan-tree-dump-times gimple "omp target oacc_[^ ]+ map.force_tofrom:y" 2
PASS: gfortran.dg/goacc/combined-directives.f90 -O scan-tree-dump-times gimple "private.z" 2
PASS: gfortran.dg/goacc/combined-directives.f90 -O (test for excess errors)
PASS: gfortran.dg/goacc/combined_loop.f90 -O (test for excess errors)
Is it correct to remove the XFAIL?
And, I'm also seeing:
PASS: gfortran.dg/goacc/loop-tree-1.f90 -O scan-tree-dump-times original "worker\\(3\\)" 1
PASS: gfortran.dg/goacc/loop-tree-1.f90 -O (test for excess errors)
PASS: gfortran.dg/goacc/mod-array.f90 -O (test for excess errors)
[-PASS:-]{+FAIL: gfortran.dg/goacc/modules.f95 -O (internal compiler error)+}
{+FAIL:+} gfortran.dg/goacc/modules.f95 -O (test for excess errors)
PASS: gfortran.dg/goacc/multi-clause.f90 -O (test for errors, line 9)
PASS: gfortran.dg/goacc/multi-clause.f90 -O (test for excess errors)
PASS: gfortran.dg/goacc/omp-fixed.f -O (test for errors, line 24)
[...]/gcc/testsuite/gfortran.dg/goacc/modules.f95:22:0: internal compiler error: in wide_int_to_tree, at tree.c:1494
0xe1cbb3 wide_int_to_tree(tree_node*, generic_wide_int<wide_int_ref_storage<false> > const&)
[...]/gcc/tree.c:1494
0xe1cdf6 build_int_cst(tree_node*, long)
[...]/gcc/tree.c:1302
0xe1ce6b build_simple_mem_ref_loc(unsigned int, tree_node*)
[...]/gcc/tree.c:4644
0xa5903d lower_oacc_reductions
[...]/gcc/omp-low.c:5733
0xa82204 lower_oacc_head_tail
[...]/gcc/omp-low.c:6479
0xa82204 lower_omp_for
[...]/gcc/omp-low.c:15276
[...]
That also reproduces when compiling that test case with GCC trunk, where
this test case is not yet present. For reference, you had originally
added this test case to our internal openacc-gomp-4_0-branch in r446781,
with gimplifier code changes, Subject: "[patch] parallel reductions data
clauses" (2015-03-11). Most of these code changes you just
removed/rewrote; so, evidently, more fixing needs to be applied. :-)
GrÃÃe
Thomas