#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