From 2bd49e6b64a450c9da88b13a338b0d194008f5bd Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 24 Apr 2019 10:13:29 +0200 Subject: [PATCH] re PR tree-optimization/90211 (ICE: tree check: expected ssa_name, have real_cst in first_readonly_imm_use, at ssa-iterators.h:351) PR tree-optimization/90211 * tree-parloops.c (try_create_reduction_list): Ignore phi arguments which are not SSA_NAMEs. * gcc.dg/autopar/pr90211.c: New test. From-SVN: r270533 --- gcc/ChangeLog | 7 ++++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/autopar/pr90211.c | 24 ++++++++++++++++++++++++ gcc/tree-parloops.c | 2 +- 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/autopar/pr90211.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2c1cc3774a1..d4af0fd1724 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,10 +1,15 @@ +2019-04-24 Jakub Jelinek + + PR tree-optimization/90211 + * tree-parloops.c (try_create_reduction_list): Ignore phi arguments + which are not SSA_NAMEs. + 2018-04-23 Sudakshina Das * config/aarch64/aarch64-linux.h (TARGET_ASM_FILE_END): Define for AArch64. (aarch64_file_end_indicate_exec_stack): Add gnu note section. - 2019-04-23 Roman Zhuykov PR rtl-optimization/87979 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 66d0b6f7562..b301146a5f8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-04-24 Jakub Jelinek + + PR tree-optimization/90211 + * gcc.dg/autopar/pr90211.c: New test. + 2019-04-23 Iain Buclaw Robin Dapp diff --git a/gcc/testsuite/gcc.dg/autopar/pr90211.c b/gcc/testsuite/gcc.dg/autopar/pr90211.c new file mode 100644 index 00000000000..ba314eb5503 --- /dev/null +++ b/gcc/testsuite/gcc.dg/autopar/pr90211.c @@ -0,0 +1,24 @@ +/* PR tree-optimization/90211 */ +/* { dg-do compile } */ +/* { dg-require-effective-target pthread } */ +/* { dg-options "-O3 -fassociative-math -ftree-parallelize-loops=2 -fno-signed-zeros -fno-trapping-math -fno-tree-copy-prop" } */ + +double +foo (int x) +{ + double a, b = 0.0; + while (x < 3) + { + int c; + a = 0.0; + c = 0; + while (c < x) + { + a += 1.0; + ++c; + } + b += 1.0; + ++x; + } + return a + b; +} diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index 7124c5b1ab5..2fddc59beb2 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -2794,7 +2794,7 @@ try_create_reduction_list (loop_p loop, gimple *reduc_phi; tree val = PHI_ARG_DEF_FROM_EDGE (phi, exit); - if (!virtual_operand_p (val)) + if (TREE_CODE (val) == SSA_NAME && !virtual_operand_p (val)) { if (dump_file && (dump_flags & TDF_DETAILS)) { -- 2.30.2