1*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm %s -o /dev/null 2*67e74705SXin Li 3*67e74705SXin Li /* GCC Used to generate code that contained a branch to the entry node of 4*67e74705SXin Li * the do_merge function. This is illegal LLVM code. To fix this, GCC now 5*67e74705SXin Li * inserts an entry node regardless of whether or not it has to insert allocas. 6*67e74705SXin Li */ 7*67e74705SXin Li 8*67e74705SXin Li struct edge_rec 9*67e74705SXin Li { 10*67e74705SXin Li struct VERTEX *v; 11*67e74705SXin Li struct edge_rec *next; 12*67e74705SXin Li int wasseen; 13*67e74705SXin Li int more_data; 14*67e74705SXin Li }; 15*67e74705SXin Li 16*67e74705SXin Li typedef struct edge_rec *QUAD_EDGE; 17*67e74705SXin Li 18*67e74705SXin Li typedef struct { 19*67e74705SXin Li QUAD_EDGE left, right; 20*67e74705SXin Li } EDGE_PAIR; 21*67e74705SXin Li 22*67e74705SXin Li struct EDGE_STACK { 23*67e74705SXin Li int ptr; 24*67e74705SXin Li QUAD_EDGE *elts; 25*67e74705SXin Li int stack_size; 26*67e74705SXin Li }; 27*67e74705SXin Li do_merge(QUAD_EDGE ldo,QUAD_EDGE rdo)28*67e74705SXin Liint do_merge(QUAD_EDGE ldo, QUAD_EDGE rdo) { 29*67e74705SXin Li int lvalid; 30*67e74705SXin Li QUAD_EDGE basel,rcand; 31*67e74705SXin Li while (1) { 32*67e74705SXin Li if (!lvalid) { 33*67e74705SXin Li return (int)basel->next; 34*67e74705SXin Li } 35*67e74705SXin Li } 36*67e74705SXin Li } 37*67e74705SXin Li 38