Test written by Vadim Girlin <[email protected]>.  I added
explanatory comments.
---
 .../dead-code-break-interaction.shader_test        | 33 ++++++++++++++++++++++
 1 file changed, 33 insertions(+)
 create mode 100644 tests/shaders/dead-code-break-interaction.shader_test

diff --git a/tests/shaders/dead-code-break-interaction.shader_test 
b/tests/shaders/dead-code-break-interaction.shader_test
new file mode 100644
index 0000000..a2c5b6a
--- /dev/null
+++ b/tests/shaders/dead-code-break-interaction.shader_test
@@ -0,0 +1,33 @@
+# This test verifies that dead code elimination correctly accounts for
+# the flow control effects of the "break" statement.  In the while
+# loop below, the first assignment to f is not dead code, even though
+# it is followed by another assignment to f, because the intervening
+# break causes the second assignment to be skipped.
+
+[require]
+GLSL >= 1.20
+
+[vertex shader]
+void main()
+{
+       gl_Position = gl_Vertex;
+}
+
+[fragment shader]
+void main()
+{
+       float f = 0.0;
+       while (true) {
+               f = 1.0; // Should not be dead code eliminated
+               break;
+               f = 0.5;
+       }
+       gl_FragColor = vec4(1.0 - f, f, 0.0, 1.0);
+}
+
+[test]
+clear color 0.0 0.0 0.0 0.0
+clear
+
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
-- 
1.8.2.1

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to