From e508155d1658571244aeb981dd42e452417d4af4 Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 26 Mar 2007 15:02:21 -0600 Subject: dead code elimination for constant-valued if/then/else --- src/mesa/shader/slang/slang_codegen.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/mesa/shader/slang') 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); -- cgit v1.2.3