This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: --disable-checking bootstrap failure
On Monday 13 September 2004 17:03, Diego Novillo wrote:
> On Mon, 2004-09-13 at 10:43, Steven Bosscher wrote:
> > The infinite loop is introduced in DOM2.
>
> Indeed. Working on a patch.
here's a smaller test case for your convenience.
union tree_node;
typedef union tree_node *tree;
enum tree_code
{ LABEL_EXPR, RETURN_EXPR };
struct tree_statement_list_node
{
struct tree_statement_list_node *prev;
struct tree_statement_list_node *next;
tree stmt;
};
union tree_node
{
int code;
};
typedef struct basic_block_def *basic_block;
typedef struct edge_def *edge;
extern basic_block ENTRY_BLOCK_PTR;
typedef struct
{
struct tree_statement_list_node *ptr;
tree container;
} tree_stmt_iterator;
typedef struct
{
tree_stmt_iterator tsi;
basic_block bb;
} block_stmt_iterator;
static __inline__ void
tsi_next (tree_stmt_iterator * i)
{
i->ptr = i->ptr->next;
}
unsigned char
tree_find_edge_insert_loc (block_stmt_iterator * bsi,
basic_block * src)
{
tree tmp;
tmp = (*bsi).tsi.ptr->stmt;
while (tmp->code == LABEL_EXPR)
{
tsi_next (&bsi->tsi);
tmp = (*bsi).tsi.ptr->stmt;
}
if (src != ENTRY_BLOCK_PTR)
(*bsi).bb = src;
return 2;
}