Merge pull request #2976 from jeremy-lunarg/hayes-fix-2975
[platform/upstream/glslang.git] / Test / recurse1.frag
1 #version 330 core\r
2 \r
3 // cross-unit recursion\r
4 \r
5 void main() {}\r
6 \r
7 // two-level recursion\r
8 \r
9 float cbar(int);\r
10 \r
11 void cfoo(float)\r
12 {\r
13         cbar(2);\r
14 }\r
15 \r
16 // four-level, out of order\r
17 \r
18 void CB();\r
19 void CD();\r
20 void CA() { CB(); }\r
21 void CC() { CD(); }\r
22 \r
23 // high degree\r
24 \r
25 void CBT();\r
26 void CDT();\r
27 void CAT() { CBT(); CBT(); CBT(); }\r
28 void CCT() { CDT(); CDT(); CBT(); }\r
29 \r
30 // not recursive\r
31 \r
32 void norA() {}\r
33 void norB() { norA(); }\r
34 void norC() { norA(); }\r
35 void norD() { norA(); }\r
36 void norE() { norB(); }\r
37 void norF() { norB(); }\r
38 void norG() { norE(); }\r
39 void norH() { norE(); }\r
40 void norI() { norE(); }\r
41 \r
42 // not recursive, but with a call leading into a cycle if ignoring direction\r
43 \r
44 void norcA() { }\r
45 void norcB() { norcA(); }\r
46 void norcC() { norcB(); }\r
47 void norcD() { norcC(); norcB(); } // head of cycle\r
48 void norcE() { norcD(); } // lead into cycle\r