On Fri, 10 May 2019, Jakub Jelinek wrote: > Hi! > > Based on the single testcase we had I thought the rest of parloops will > handle the exit PHIs with non-SSA_NAME arguments just fine, but this patch > shows that is not the case and doesn't seem trivial to fix (just punting > on the other ICE spot doesn't work). As both the testcases are about > massive -fno-* disabling of optimizations, I don't see a sufficient use case > to actually support that, so this patch modifies the last change to punt > instead of trying to support it. If we find an important use case, anyone > with sufficient motivaction can change this again and add full support for > that. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk and > after a while for 9.2?
OK. Richard. > 2019-05-10 Jakub Jelinek <ja...@redhat.com> > > PR tree-optimization/90385 > * tree-parloops.c (try_create_reduction_list): Punt on non-SSA_NAME > arguments of the exit phis. > > * gfortran.dg/pr90385.f90: New test. > > --- gcc/tree-parloops.c.jj 2019-05-03 15:22:07.000000000 +0200 > +++ gcc/tree-parloops.c 2019-05-09 11:33:19.238730902 +0200 > @@ -2794,8 +2794,16 @@ try_create_reduction_list (loop_p loop, > gimple *reduc_phi; > tree val = PHI_ARG_DEF_FROM_EDGE (phi, exit); > > - if (TREE_CODE (val) == SSA_NAME && !virtual_operand_p (val)) > + if (!virtual_operand_p (val)) > { > + if (TREE_CODE (val) != SSA_NAME) > + { > + if (dump_file && (dump_flags & TDF_DETAILS)) > + fprintf (dump_file, > + " FAILED: exit PHI argument invariant.\n"); > + return false; > + } > + > if (dump_file && (dump_flags & TDF_DETAILS)) > { > fprintf (dump_file, "phi is "); > --- gcc/testsuite/gfortran.dg/pr90385.f90.jj 2019-05-09 11:42:21.463573092 > +0200 > +++ gcc/testsuite/gfortran.dg/pr90385.f90 2019-05-09 11:42:14.622688340 > +0200 > @@ -0,0 +1,6 @@ > +! PR tree-optimization/90385 > +! { dg-do compile } > +! { dg-require-effective-target pthread } > +! { dg-options "-O1 -ftree-parallelize-loops=2 -fno-tree-ccp -fno-tree-ch > -fno-tree-copy-prop -fno-tree-forwprop -fno-tree-sink --param > parloops-min-per-thread=5" } > + > +include 'array_constructor_47.f90' > > Jakub > -- Richard Biener <rguent...@suse.de> SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Felix Imendörffer, Mary Higgins, Sri Rasiah; HRB 21284 (AG Nürnberg)