[Mesa-dev] [PATCH 08/10] glsl: fix new gcc6 warnings
Ian Romanick
idr at freedesktop.org
Tue Feb 16 19:32:32 UTC 2016
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. :(
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 <robdclark at 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);
>
More information about the mesa-dev
mailing list