summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/glslang/src/Test/recurse1.frag
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/glslang/src/Test/recurse1.frag')
-rw-r--r--chromium/third_party/glslang/src/Test/recurse1.frag48
1 files changed, 48 insertions, 0 deletions
diff --git a/chromium/third_party/glslang/src/Test/recurse1.frag b/chromium/third_party/glslang/src/Test/recurse1.frag
new file mode 100644
index 00000000000..447a8827d67
--- /dev/null
+++ b/chromium/third_party/glslang/src/Test/recurse1.frag
@@ -0,0 +1,48 @@
+#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