From: Jakub Jelinek Date: Fri, 17 May 2019 19:51:32 +0000 (+0200) Subject: backport: re PR tree-optimization/90385 (ICE: tree check: expected ssa_name, have... X-Git-Tag: releases/gcc-9.2.0~353 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b1abd54e2a93deb5dd4670a4cbdff5aaa49ddbb1;p=thirdparty%2Fgcc.git backport: re PR tree-optimization/90385 (ICE: tree check: expected ssa_name, have real_cst in transform_to_exit_first_loop_alt, at tree-parloops.c:1772) Backported from mainline 2019-05-10 Jakub Jelinek 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. From-SVN: r271352 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 843c03aa8744..ac65f1ea2f2c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -3,6 +3,10 @@ Backported from mainline 2019-05-10 Jakub Jelinek + PR tree-optimization/90385 + * tree-parloops.c (try_create_reduction_list): Punt on non-SSA_NAME + arguments of the exit phis. + PR c++/90383 * tree-inline.h (struct copy_body_data): Add do_not_fold member. * tree-inline.c (remap_gimple_op_r): Avoid folding expressions if diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 170106fe24af..42955ca1937a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -3,6 +3,9 @@ Backported from mainline 2019-05-10 Jakub Jelinek + PR tree-optimization/90385 + * gfortran.dg/pr90385.f90: New test. + PR c++/90383 * g++.dg/cpp1y/constexpr-90383-1.C: New test. * g++.dg/cpp1y/constexpr-90383-2.C: New test. diff --git a/gcc/testsuite/gfortran.dg/pr90385.f90 b/gcc/testsuite/gfortran.dg/pr90385.f90 new file mode 100644 index 000000000000..5ce34aa5bd52 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr90385.f90 @@ -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' diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index 2fddc59beb21..c5629cc80896 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -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 ");