From 3c8e341b996546607fa1f39a0fd9a9d7c2c38214 Mon Sep 17 00:00:00 2001 From: Prathamesh Kulkarni Date: Tue, 15 Oct 2019 07:19:41 +0000 Subject: [PATCH] re PR tree-optimization/92085 (ICE: tree check: expected class 'type', have 'exceptional' (error_mark) in useless_type_conversion_p, at gimple-expr.c:86) 2019-10-15 Prathamesh Kulkarni PR tree-optimization/92085 * tree-if-conv.c (ifcvt_local_dce): Call gsi_next in else clause, instead of calling it unconditionally after delete_dead_or_redundant_assignment and fix indentation. testsuite/ * gcc.dg/tree-ssa/pr92085-1.c: New test. * gcc.dg/tree-ssa/pr92085-2.c: Likewise. From-SVN: r276984 --- gcc/ChangeLog | 7 ++++++ gcc/testsuite/ChangeLog | 6 +++++ gcc/testsuite/gcc.dg/tree-ssa/pr92085-1.c | 20 ++++++++++++++++ gcc/testsuite/gcc.dg/tree-ssa/pr92085-2.c | 29 +++++++++++++++++++++++ gcc/tree-if-conv.c | 9 +++---- 5 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr92085-1.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr92085-2.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9957d2cbc74..91809ca9c07 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-10-15 Prathamesh Kulkarni + + PR tree-optimization/92085 + * tree-if-conv.c (ifcvt_local_dce): Call gsi_next in else clause, + instead of calling it unconditionally after + delete_dead_or_redundant_assignment and fix indentation. + 2019-10-15 Kugan Vivekanandarajah * config/arm/vfp.md (fma4): Enable DF only when diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0285490cd6c..ae169070ed5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2019-10-15 Prathamesh Kulkarni + + PR tree-optimization/92085 + * gcc.dg/tree-ssa/pr92085-1.c: New test. + * gcc.dg/tree-ssa/pr92085-2.c: Likewise. + 2019-10-14 Steven G. Kargl PR fortran/89943 diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr92085-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr92085-1.c new file mode 100644 index 00000000000..c18f820a09e --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr92085-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -fexceptions -fnon-call-exceptions -ftree-loop-vectorize -fno-tree-sink --param dse-max-alias-queries-per-store=2 -w" } */ + +void +di (int y9, int qw) +{ + if ((int) &y9 != 0) + { + int py; + int **fq = &py; + + while (qw < 1) + { + if ((0 < (**fq ? **fq : (**fq = 1))) / (**fq = y9)) + ; + + ++qw; + } + } +} diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr92085-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr92085-2.c new file mode 100644 index 00000000000..f62585c2f0f --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr92085-2.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -ftree-loop-vectorize -fno-tree-dce -fno-tree-sink -w" } */ + +int a8; + +void +c1 (int oz, int dk, int ub) +{ + int *hd = 0; + long int *th = &dk; + + while (ub < 1) + { + oz || dk; + ++ub; + } + + while (oz < 2) + { + long int *lq = &oz; + + (*hd < (*lq = *th)) < oz; + + if (oz == 0) + *th = a8 = oz; + + *lq = 0; + } +} diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index af49813b0d1..3c296ec3002 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -2973,10 +2973,11 @@ ifcvt_local_dce (class loop *loop) ao_ref write; ao_ref_init (&write, lhs); - if (dse_classify_store (&write, stmt, false, NULL, NULL, latch_vdef) - == DSE_STORE_DEAD) - delete_dead_or_redundant_assignment (&gsi, "dead"); - gsi_next (&gsi); + if (dse_classify_store (&write, stmt, false, NULL, NULL, latch_vdef) + == DSE_STORE_DEAD) + delete_dead_or_redundant_assignment (&gsi, "dead"); + else + gsi_next (&gsi); continue; } -- 2.30.2