This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]