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
This commit is contained in:
Devang Patel 2005-09-27 14:44:55 -07:00
parent 118ea208fa
commit 93954fcc89
4 changed files with 40 additions and 8 deletions

View File

@ -1,3 +1,10 @@
2005-09-27 Daniel Berlin <dberlin@dberlin.org>
Devang Patel <dpatel@apple.com>
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 <joern.rennecke@st.com>
* optabs.c (no_conflict_move_test): Check if a result of a

View File

@ -1,3 +1,8 @@
2005-09-27 Devang Patel <dpatel@apple.com>
PR tree-optimization/23625
* gcc.dg/pr23625.c: New test.
2005-09-27 Uros Bizjak <uros@kss-loka.si>
* gcc.target/i386/pr22585.c: Run on 32-bit x86 only.

View File

@ -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;
}
}
}

View File

@ -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);