glsl/ast: Generate a more compact expression to disable execution of default case
authorIan Romanick <ian.d.romanick@intel.com>
Tue, 19 Sep 2017 20:59:00 +0000 (15:59 -0500)
committerIan Romanick <ian.d.romanick@intel.com>
Mon, 2 Oct 2017 21:46:10 +0000 (14:46 -0700)
commitd5361d9f01a3e3f1480e7804252fd23a3cc1dd7f
tree6c55d8ff0757872c10ac2f8d27dd5c7cad1e50ba
parent3e5cd2aba9317ba4e3eb812b8b88523a9371f86a
glsl/ast: Generate a more compact expression to disable execution of default case

Instead of generating a sequence like:

    run_default = true;
    if (i == 3) // some label that appears after default
        run_default = false;
    if (i == 4) // some label that appears after default
        run_default = false;
    ...
    if (run_default) {
        ...
    }

generate something like:

    run_default = !((i == 3) || (i == 4) || ...);
    if (run_default) {
        ...
    }

This eliminates one use of conditional assignment, and it enables the
elimination of another.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
src/compiler/glsl/ast_to_hir.cpp