Hi Cesar! On Mon, 11 Apr 2016 16:23:40 -0700, Cesar Philippidis <ce...@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