From 93954fcc895e40418cecc5c0c1d35ef579ea204d Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Tue, 27 Sep 2005 14:44:55 -0700 Subject: [PATCH] re PR tree-optimization/23625 (ICE: in bsi_after_labels, at tree-flow-inline.h:758) PR tree-optimization/23625 * tree-flow-inline.h (bsi_after_labels): Remove, first statement is LABEL_EXPR, assertion check. * gcc.dg/PR23625.c: New test. From-SVN: r104711 --- gcc/ChangeLog | 7 +++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr23625.c | 27 +++++++++++++++++++++++++++ gcc/tree-flow-inline.h | 9 +-------- 4 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr23625.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d1db15ee091..8963cab452d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-09-27 Daniel Berlin + Devang Patel + + PR tree-optimization/23625 + * tree-flow-inline.h (bsi_after_labels): Remove, first statement is + LABEL_EXPR, assertion check. + 2005-09-27 J"orn Rennecke * optabs.c (no_conflict_move_test): Check if a result of a diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9fd016a1eef..61bf586dbf8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-09-27 Devang Patel + + PR tree-optimization/23625 + * gcc.dg/pr23625.c: New test. + 2005-09-27 Uros Bizjak * gcc.target/i386/pr22585.c: Run on 32-bit x86 only. diff --git a/gcc/testsuite/gcc.dg/pr23625.c b/gcc/testsuite/gcc.dg/pr23625.c new file mode 100644 index 00000000000..aaeddb2886d --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr23625.c @@ -0,0 +1,27 @@ +/* Test case for PR23625 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftree-vectorize -ftree-loop-linear" } */ + +typedef long INT32; +void find_best_colors () +{ +int ic0, ic1, ic2; +INT32 * bptr; +INT32 dist1; +INT32 dist2; +INT32 xx1; +for (ic0 = (1<<(5 -3))-1;ic0 >= 0;ic0--) +{ + for (ic1 = (1<<(6 -3))-1;ic1 >= 0;ic1--) + { + dist2 = dist1; + for (ic2 = (1<<(5 -3))-1;ic2 >= 0;ic2--) + { + *bptr = dist2; + bptr++; + } + dist1 += xx1; + } +} +} + diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h index b317c8ccc9a..d8b57a556af 100644 --- a/gcc/tree-flow-inline.h +++ b/gcc/tree-flow-inline.h @@ -727,7 +727,7 @@ bsi_start (basic_block bb) return bsi; } -/* Return a block statement iterator that points to the last label in +/* Return a block statement iterator that points to the first non-label block BB. */ static inline block_stmt_iterator @@ -750,13 +750,6 @@ bsi_after_labels (basic_block bb) if (tsi_end_p (bsi.tsi)) return bsi; - /* Ensure that there are some labels. The rationale is that we want - to insert after the bsi that is returned, and these insertions should - be placed at the start of the basic block. This would not work if the - first statement was not label; rather fail here than enable the user - proceed in wrong way. */ - gcc_assert (TREE_CODE (tsi_stmt (bsi.tsi)) == LABEL_EXPR); - next = bsi.tsi; tsi_next (&next); -- 2.30.2