summaryrefslogtreecommitdiff
path: root/gcc/tree-parloops.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-05-10 10:20:38 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2019-05-10 10:20:38 +0200
commit425f5fd4c444a75ea0a7fec02d49d3814c724f67 (patch)
tree616d4fa13f50a963750d185103b7fe1793d0f323 /gcc/tree-parloops.c
parentb5cbaee240380ba1a3a48fad3810409dea32b888 (diff)
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)
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: r271059
Diffstat (limited to 'gcc/tree-parloops.c')
-rw-r--r--gcc/tree-parloops.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index 968368f7f44..9de154e722f 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 ");