[Mesa-dev] [PATCH] ac/nir: silence maybe-uninitialized warnings
Nicolai Hähnle
nhaehnle at gmail.com
Mon Aug 28 08:44:59 UTC 2017
On 28.08.2017 10:30, Nicolai Hähnle wrote:
> On 27.08.2017 23:43, Grazvydas Ignotas wrote:
>> These are likely false positives, but are also annoying because they
>> show up on every "make install", which causes ac_nir_to_llvm to be
>> rebuilt here. Initializing those variables to NULL should be harmless
>> even when unnecessary.
>>
>> Signed-off-by: Grazvydas Ignotas <notasas at gmail.com>
>> ---
>> src/amd/common/ac_nir_to_llvm.c | 15 +++++++++------
>> 1 file changed, 9 insertions(+), 6 deletions(-)
>>
>> diff --git a/src/amd/common/ac_nir_to_llvm.c
>> b/src/amd/common/ac_nir_to_llvm.c
>> index 664d83b..823ea42 100644
>> --- a/src/amd/common/ac_nir_to_llvm.c
>> +++ b/src/amd/common/ac_nir_to_llvm.c
>> @@ -1332,11 +1332,11 @@ static LLVMValueRef emit_i2b(struct
>> ac_llvm_context *ctx,
>> static LLVMValueRef emit_f2f16(struct nir_to_llvm_context *ctx,
>> LLVMValueRef src0)
>> {
>> LLVMValueRef result;
>> - LLVMValueRef cond;
>> + LLVMValueRef cond = NULL;
>> src0 = to_float(&ctx->ac, src0);
>> result = LLVMBuildFPTrunc(ctx->builder, src0, ctx->f16, "");
>> if (ctx->options->chip_class >= VI) {
>> @@ -2052,11 +2052,11 @@ static LLVMValueRef
>> radv_lower_gather4_integer(struct ac_llvm_context *ctx,
>> const nir_tex_instr *instr)
>> {
>> enum glsl_base_type stype =
>> glsl_get_sampler_result_type(instr->texture->var->type);
>> LLVMValueRef coord = args->addr;
>> LLVMValueRef half_texel[2];
>> - LLVMValueRef compare_cube_wa;
>> + LLVMValueRef compare_cube_wa = NULL;
>> LLVMValueRef result;
>> int c;
>> unsigned coord_vgpr_index = (unsigned)args->offset +
>> (unsigned)args->compare;
>> //TODO Rect
>> @@ -2778,11 +2778,12 @@ load_tcs_input(struct nir_to_llvm_context *ctx,
>> static LLVMValueRef
>> load_tcs_output(struct nir_to_llvm_context *ctx,
>> nir_intrinsic_instr *instr)
>> {
>> - LLVMValueRef dw_addr, stride;
>> + LLVMValueRef dw_addr;
>> + LLVMValueRef stride = NULL;
>> LLVMValueRef value[4], result;
>> LLVMValueRef vertex_index = NULL;
>> LLVMValueRef indir_index = NULL;
>> unsigned const_index = 0;
>> unsigned param;
>> @@ -2817,11 +2818,12 @@ static void
>> store_tcs_output(struct nir_to_llvm_context *ctx,
>> nir_intrinsic_instr *instr,
>> LLVMValueRef src,
>> unsigned writemask)
>> {
>> - LLVMValueRef stride, dw_addr;
>> + LLVMValueRef dw_addr;
>> + LLVMValueRef stride = NULL;
>> LLVMValueRef buf_addr = NULL;
>> LLVMValueRef vertex_index = NULL;
>> LLVMValueRef indir_index = NULL;
>> unsigned const_index = 0;
>> unsigned param;
>> @@ -3817,12 +3819,13 @@ static LLVMValueRef visit_interp(struct
>> nir_to_llvm_context *ctx,
>> {
>> LLVMValueRef result[2];
>> LLVMValueRef interp_param, attr_number;
>> unsigned location;
>> unsigned chan;
>> - LLVMValueRef src_c0, src_c1;
>> - LLVMValueRef src0;
>> + LLVMValueRef src_c0 = NULL;
>> + LLVMValueRef src_c1 = NULL;
>> + LLVMValueRef src0 = NULL;
>
> I think this one actually involves a real bug. Specifically, I suspect
> that the
>
> if (location == INTERP_SAMPLE || location == INTERP_CENTER) {
>
> below should really be
>
> if (location == INTERP_SAMPLE || location == INTERP_OFFSET) {
>
> because src_c0/c1 are set, and the enclosed logic makes sense, only in
> the nir_intrinsic_interp_var_at_{sample,offset} cases.
Never mind, that part is misleading. location refers to the base
location, not the final location of the sample, and it can never be
INTERP_SAMPLE.
It'd make sense to to change it to
if (location == INTERP_CENTER) [
Whether or not you decide to include that in the patch, it's
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
>
> Apart from that, the patch looks good to me.
>
> Cheers,
> Nicolai
>
>
>> int input_index = instr->variables[0]->var->data.location -
>> VARYING_SLOT_VAR0;
>> switch (instr->intrinsic) {
>> case nir_intrinsic_interp_var_at_centroid:
>> location = INTERP_CENTROID;
>> break;
>>
>
>
--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
More information about the mesa-dev
mailing list