// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null

/* GCC Used to generate code that contained a branch to the entry node of 
 * the do_merge function.  This is illegal LLVM code.  To fix this, GCC now
 * inserts an entry node regardless of whether or not it has to insert allocas.
 */

struct edge_rec
{
  struct VERTEX *v;
  struct edge_rec *next;
  int wasseen;
  int more_data;
};

typedef struct edge_rec *QUAD_EDGE;

typedef struct {
  QUAD_EDGE left, right;
} EDGE_PAIR;

struct EDGE_STACK {
    int ptr;
    QUAD_EDGE *elts;
    int stack_size;
};

int do_merge(QUAD_EDGE ldo, QUAD_EDGE rdo) {
  int lvalid;
  QUAD_EDGE basel,rcand;
  while (1) {
    if (!lvalid) {
      return (int)basel->next;
    }
  }
}

