[Piglit] [PATCH] Test interaction of dead code elimination with "break" statements.

Matt Turner mattst88 at gmail.com
Tue Apr 23 11:10:25 PDT 2013


On Tue, Apr 23, 2013 at 10:22 AM, Paul Berry <stereotype441 at gmail.com> wrote:
> Test written by Vadim Girlin <vadimgirlin at gmail.com>.  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

Reviewed-by: Matt Turner <mattst88 at gmail.com>


More information about the Piglit mailing list