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