[Mesa-dev] [PATCH 1/6] draw: silence unused var warnings for non-debug build
Jose Fonseca
jfonseca at vmware.com
Mon Jun 1 06:39:05 PDT 2015
On 01/06/15 14:20, Brian Paul wrote:
> ---
> src/gallium/auxiliary/draw/draw_llvm.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c
> index b9e55af..885c27c 100644
> --- a/src/gallium/auxiliary/draw/draw_llvm.c
> +++ b/src/gallium/auxiliary/draw/draw_llvm.c
> @@ -97,6 +97,7 @@ create_jit_dvbuffer_type(struct gallivm_state *gallivm,
> dvbuffer_type = LLVMStructTypeInContext(gallivm->context, elem_types,
> Elements(elem_types), 0);
>
> + (void) target; /* silence unused var warning for non-debug build */
> LP_CHECK_MEMBER_OFFSET(struct draw_vertex_buffer, map,
> target, dvbuffer_type,
> DRAW_JIT_DVBUFFER_MAP);
> @@ -133,6 +134,7 @@ create_jit_texture_type(struct gallivm_state *gallivm, const char *struct_name)
> texture_type = LLVMStructTypeInContext(gallivm->context, elem_types,
> Elements(elem_types), 0);
>
> + (void) target; /* silence unused var warning for non-debug build */
> LP_CHECK_MEMBER_OFFSET(struct draw_jit_texture, width,
> target, texture_type,
> DRAW_JIT_TEXTURE_WIDTH);
> @@ -290,6 +292,7 @@ create_gs_jit_context_type(struct gallivm_state *gallivm,
> context_type = LLVMStructTypeInContext(gallivm->context, elem_types,
> Elements(elem_types), 0);
>
> + (void) target; /* silence unused var warning for non-debug build */
> LP_CHECK_MEMBER_OFFSET(struct draw_gs_jit_context, constants,
> target, context_type, DRAW_GS_JIT_CTX_CONSTANTS);
> LP_CHECK_MEMBER_OFFSET(struct draw_gs_jit_context, num_constants,
> @@ -353,6 +356,7 @@ create_jit_vertex_buffer_type(struct gallivm_state *gallivm,
> vb_type = LLVMStructTypeInContext(gallivm->context, elem_types,
> Elements(elem_types), 0);
>
> + (void) target; /* silence unused var warning for non-debug build */
> LP_CHECK_MEMBER_OFFSET(struct pipe_vertex_buffer, stride,
> target, vb_type, 0);
> LP_CHECK_MEMBER_OFFSET(struct pipe_vertex_buffer, buffer_offset,
>
Series LGTM.
Reviewed-by: Jose Fonseca <jfonseca at vmware.com>
The reasons these warnings are popping up is because we're using
system's assert macro, instead of src/gallium/auxiliary/util/u_debug.h
src/gallium/auxiliary/util/u_debug.h have two advantages over system's
assert macro:
1. it avoids these unused variable warnings because the non-debug
version includes the expression:
#define debug_assert(expr) (void)(0 && (expr))
2. On windows it will dump the assert failure message as
stderr/OutputDebugMessage (instead of a MessageBox.)
That said, I agree that trying to override system's assert is unsustainable.
Your series addresses issue 1. For issue 2, it might be worthwhile to
override the _assert/_wassert built-in implementations instead. This is
the approach I recently did on Apitrace and it seems to work just as well:
https://github.com/apitrace/apitrace/blob/master/wrappers/assert.cpp
This is not urgent. But if you find yourself wondering why assertion
failure messages don't appear on logs, it might be worth doing it.
Jose
More information about the mesa-dev
mailing list