From: Brian Date: Mon, 26 Mar 2007 21:02:21 +0000 (-0600) Subject: dead code elimination for constant-valued if/then/else X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e508155d1658571244aeb981dd42e452417d4af4;p=mesa.git dead code elimination for constant-valued if/then/else --- diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c index 4a67d4535aa..f9dae9f7aa1 100644 --- a/src/mesa/shader/slang/slang_codegen.c +++ b/src/mesa/shader/slang/slang_codegen.c @@ -1482,6 +1482,19 @@ _slang_gen_if(slang_assemble_ctx * A, const slang_operation *oper) */ const GLboolean haveElseClause = !_slang_is_noop(&oper->children[2]); slang_ir_node *ifNode, *cond, *ifBody, *elseBody; + GLboolean isConst, constTrue; + + isConst = _slang_is_constant_cond(&oper->children[0], &constTrue); + if (isConst) { + if (constTrue) { + /* if (true) ... */ + return _slang_gen_operation(A, &oper->children[1]); + } + else { + /* if (false) ... */ + return _slang_gen_operation(A, &oper->children[2]); + } + } cond = _slang_gen_operation(A, &oper->children[0]); cond = new_cond(cond);