#version 330 core void main() {} float bar(int); // direct recursion void self() { self(); } // two-level recursion void foo(float) { bar(2); } float bar(int) { foo(4.2); return 3.2; } // four-level, out of order void B(); void D(); void A() { B(); } void C() { D(); } void B() { C(); } void D() { A(); } // high degree void BT(); void DT(); void AT() { BT(); BT(); BT(); } void CT() { DT(); AT(); DT(); BT(); } void BT() { CT(); CT(); CT(); } void DT() { AT(); }