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)

Reply via email to