13883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher// RUN: %clang_cc1 -emit-llvm %s -o /dev/null 23883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 33883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher/* GCC Used to generate code that contained a branch to the entry node of 43883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher * the do_merge function. This is illegal LLVM code. To fix this, GCC now 53883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher * inserts an entry node regardless of whether or not it has to insert allocas. 63883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher */ 73883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 83883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstruct edge_rec 93883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher{ 103883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher struct VERTEX *v; 113883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher struct edge_rec *next; 123883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher int wasseen; 133883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher int more_data; 143883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}; 153883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 163883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christophertypedef struct edge_rec *QUAD_EDGE; 173883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 183883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christophertypedef struct { 193883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher QUAD_EDGE left, right; 203883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} EDGE_PAIR; 213883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 223883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstruct EDGE_STACK { 233883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher int ptr; 243883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher QUAD_EDGE *elts; 253883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher int stack_size; 263883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}; 273883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 283883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherint do_merge(QUAD_EDGE ldo, QUAD_EDGE rdo) { 293883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher int lvalid; 303883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher QUAD_EDGE basel,rcand; 313883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher while (1) { 323883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher if (!lvalid) { 333883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher return (int)basel->next; 343883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher } 353883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher } 363883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} 373883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 38