Don't descend into assignments. This is the same optimization that is already done in opt_if_simplification. --- src/compiler/glsl/opt_conditional_discard.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/src/compiler/glsl/opt_conditional_discard.cpp b/src/compiler/glsl/opt_conditional_discard.cpp index 6d8a23460d..d7cb2069ed 100644 --- a/src/compiler/glsl/opt_conditional_discard.cpp +++ b/src/compiler/glsl/opt_conditional_discard.cpp @@ -46,12 +46,23 @@ public: } ir_visitor_status visit_leave(ir_if *); + ir_visitor_status visit_enter(ir_assignment *); bool progress; }; } /* anonymous namespace */ +/* We only care about the top level "if" instructions, so don't + * descend into expressions. + */ +ir_visitor_status +opt_conditional_discard_visitor::visit_enter(ir_assignment *ir) +{ + (void) ir; + return visit_continue_with_parent; +} + bool opt_conditional_discard(exec_list *instructions) { -- 2.12.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev