On Tue, Feb 16, 2016 at 2:32 PM, Ian Romanick <i...@freedesktop.org> wrote: > On 02/16/2016 10:58 AM, Rob Clark wrote: >> src/compiler/glsl/lower_discard_flow.cpp:79:1: warning: ‘ir_visitor_status >> {anonymous}::lower_discard_flow_visitor::visit_enter(ir_loop_jump*)’ defined >> but not used [-Wunused-function] >> lower_discard_flow_visitor::visit_enter(ir_loop_jump *ir) >> ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> Note, not sure if this was a latent bug? Could be that was intended to >> override visit(ir_loop_jump *)? > > I'll wager that is correct, and the bug has existed since day 1. :(
I guess this is as good an excuse as any to try to write a piglit test (shader_test).. BR, -R > To hit the bug, you'd need a loop with both a discard and a continue. I > suspect that is a rare combination. To observe that the bug had been > hit, you'd have to use a derivative (either via dFdx() and friends or > texture()) in a particular way. I'll have to try to think of a test case. > > It might be easier to just add a unit test. We know that > > for (int i = 0; i < x; i++) { > if (z) > continue; > > if (y) > discard; > } > > should get transformed to > > for (int i = 0; i < x; i++) { > if (z) { > if (discarded) > break; > > continue; > } > > if (y) { > discarded = true; > discard; > } > > if (discarded) > break; > } > >> Signed-off-by: Rob Clark <robdcl...@gmail.com> >> --- >> src/compiler/glsl/lower_discard_flow.cpp | 12 ------------ >> 1 file changed, 12 deletions(-) >> >> diff --git a/src/compiler/glsl/lower_discard_flow.cpp >> b/src/compiler/glsl/lower_discard_flow.cpp >> index 9d0a56b..bdb96b4 100644 >> --- a/src/compiler/glsl/lower_discard_flow.cpp >> +++ b/src/compiler/glsl/lower_discard_flow.cpp >> @@ -63,7 +63,6 @@ public: >> } >> >> ir_visitor_status visit_enter(ir_discard *ir); >> - ir_visitor_status visit_enter(ir_loop_jump *ir); >> ir_visitor_status visit_enter(ir_loop *ir); >> ir_visitor_status visit_enter(ir_function_signature *ir); >> >> @@ -76,17 +75,6 @@ public: >> } /* anonymous namespace */ >> >> ir_visitor_status >> -lower_discard_flow_visitor::visit_enter(ir_loop_jump *ir) >> -{ >> - if (ir->mode != ir_loop_jump::jump_continue) >> - return visit_continue; >> - >> - ir->insert_before(generate_discard_break()); >> - >> - return visit_continue; >> -} >> - >> -ir_visitor_status >> lower_discard_flow_visitor::visit_enter(ir_discard *ir) >> { >> ir_dereference *lhs = new(mem_ctx) ir_dereference_variable(discarded); >> > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev