38 lines
		
	
	
		
			715 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			715 B
		
	
	
	
		
			C
		
	
	
	
	
	
// 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;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 |