forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			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;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 |