49 lines
		
	
	
		
			857 B
		
	
	
	
		
			GLSL
		
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			857 B
		
	
	
	
		
			GLSL
		
	
	
	
#version 330 core
 | 
						|
 | 
						|
// cross-unit recursion
 | 
						|
 | 
						|
void main() {}
 | 
						|
 | 
						|
// two-level recursion
 | 
						|
 | 
						|
float cbar(int);
 | 
						|
 | 
						|
void cfoo(float)
 | 
						|
{
 | 
						|
	cbar(2);
 | 
						|
}
 | 
						|
 | 
						|
// four-level, out of order
 | 
						|
 | 
						|
void CB();
 | 
						|
void CD();
 | 
						|
void CA() { CB(); }
 | 
						|
void CC() { CD(); }
 | 
						|
 | 
						|
// high degree
 | 
						|
 | 
						|
void CBT();
 | 
						|
void CDT();
 | 
						|
void CAT() { CBT(); CBT(); CBT(); }
 | 
						|
void CCT() { CDT(); CDT(); CBT(); }
 | 
						|
 | 
						|
// not recursive
 | 
						|
 | 
						|
void norA() {}
 | 
						|
void norB() { norA(); }
 | 
						|
void norC() { norA(); }
 | 
						|
void norD() { norA(); }
 | 
						|
void norE() { norB(); }
 | 
						|
void norF() { norB(); }
 | 
						|
void norG() { norE(); }
 | 
						|
void norH() { norE(); }
 | 
						|
void norI() { norE(); }
 | 
						|
 | 
						|
// not recursive, but with a call leading into a cycle if ignoring direction
 | 
						|
 | 
						|
void norcA() { }
 | 
						|
void norcB() { norcA(); }
 | 
						|
void norcC() { norcB(); }
 | 
						|
void norcD() { norcC(); norcB(); } // head of cycle
 | 
						|
void norcE() { norcD(); } // lead into cycle
 |