[Mesa-dev] [PATCH 02/13] nir/spirv: Use unreachable("...") rather than assert(!"...")

Jordan Justen jordan.l.justen at intel.com
Thu Aug 10 23:02:37 UTC 2017


On 2017-08-10 15:02:33, Matt Turner wrote:
> Quiets a number of uninitialized variable warnings in clang.
> ---
>  src/compiler/spirv/spirv_to_nir.c  | 24 ++++++++++++------------
>  src/compiler/spirv/vtn_variables.c | 10 +++++-----
>  2 files changed, 17 insertions(+), 17 deletions(-)
> 
> diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
> index 7b34dad30c..870dda0314 100644
> --- a/src/compiler/spirv/spirv_to_nir.c
> +++ b/src/compiler/spirv/spirv_to_nir.c
> @@ -262,7 +262,7 @@ vtn_handle_extension(struct vtn_builder *b, SpvOp opcode,
>        if (strcmp((const char *)&w[2], "GLSL.std.450") == 0) {
>           val->ext_handler = vtn_handle_glsl450_instruction;
>        } else {
> -         assert(!"Unsupported extension");
> +         unreachable("Unsupported extension");
>        }
>        break;
>     }
> @@ -724,7 +724,7 @@ translate_image_format(SpvImageFormat format)
>     case SpvImageFormatR16ui:        return 0x8234; /* GL_R16UI */
>     case SpvImageFormatR8ui:         return 0x8232; /* GL_R8UI */
>     default:
> -      assert(!"Invalid image format");
> +      unreachable("Invalid image format");
>        return 0;
>     }
>  }
> @@ -785,7 +785,7 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode,
>        val->type->type = glsl_matrix_type(glsl_get_base_type(base->type),
>                                           glsl_get_vector_elements(base->type),
>                                           columns);
> -      assert(!glsl_type_is_error(val->type->type));
> +      unreachable(glsl_type_is_error(val->type->type));

I think we want assert here, right?

>        val->type->length = columns;
>        val->type->array_element = base;
>        val->type->row_major = false;
> @@ -919,7 +919,7 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode,
>           else if (dim == GLSL_SAMPLER_DIM_SUBPASS)
>              dim = GLSL_SAMPLER_DIM_SUBPASS_MS;
>           else
> -            assert(!"Unsupported multisampled image type");
> +            unreachable("Unsupported multisampled image type");
>        }
>  
>        val->type->image_format = translate_image_format(format);
> @@ -929,12 +929,12 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode,
>           val->type->type = glsl_sampler_type(dim, is_shadow, is_array,
>                                               glsl_get_base_type(sampled_type));
>        } else if (sampled == 2) {
> -         assert(!is_shadow);
> +         unreachable(is_shadow);

and here ...

>           val->type->sampled = false;
>           val->type->type = glsl_image_type(dim, is_array,
>                                             glsl_get_base_type(sampled_type));
>        } else {
> -         assert(!"We need to know if the image will be sampled");
> +         unreachable("We need to know if the image will be sampled");
>        }
>        break;
>     }
> @@ -1378,7 +1378,7 @@ vtn_handle_constant(struct vtn_builder *b, SpvOp opcode,
>        break;
>  
>     case SpvOpConstantSampler:
> -      assert(!"OpConstantSampler requires Kernel Capability");
> +      unreachable("OpConstantSampler requires Kernel Capability");
>        break;
>  
>     default:
> @@ -2626,7 +2626,7 @@ gl_primitive_from_spv_execution_mode(SpvExecutionMode mode)
>     case SpvExecutionModeOutputTriangleStrip:
>        return 5; /* GL_TRIANGLE_STRIP */
>     default:
> -      assert(!"Invalid primitive type");
> +      unreachable("Invalid primitive type");
>        return 4;
>     }
>  }
> @@ -2646,7 +2646,7 @@ vertices_in_from_spv_execution_mode(SpvExecutionMode mode)
>     case SpvExecutionModeInputTrianglesAdjacency:
>        return 6;
>     default:
> -      assert(!"Invalid GS input mode");
> +      unreachable("Invalid GS input mode");
>        return 0;
>     }
>  }
> @@ -2974,7 +2974,7 @@ vtn_handle_execution_mode(struct vtn_builder *b, struct vtn_value *entry_point,
>        break;
>  
>     case SpvExecutionModeXfb:
> -      assert(!"Unhandled execution mode");
> +      unreachable("Unhandled execution mode");
>        break;
>  
>     case SpvExecutionModeVecTypeHint:
> @@ -3008,7 +3008,7 @@ vtn_handle_variable_or_type_instruction(struct vtn_builder *b, SpvOp opcode,
>     case SpvOpMemberDecorate:
>     case SpvOpGroupDecorate:
>     case SpvOpGroupMemberDecorate:
> -      assert(!"Invalid opcode types and variables section");
> +      unreachable("Invalid opcode types and variables section");
>        break;
>  
>     case SpvOpTypeVoid:
> @@ -3348,7 +3348,7 @@ spirv_to_nir(const uint32_t *words, size_t word_count,
>                                     vtn_handle_preamble_instruction);
>  
>     if (b->entry_point == NULL) {
> -      assert(!"Entry point not found");
> +      unreachable("Entry point not found");
>        ralloc_free(b);
>        return NULL;
>     }
> diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
> index 4432e72e54..077ad7bb1c 100644
> --- a/src/compiler/spirv/vtn_variables.c
> +++ b/src/compiler/spirv/vtn_variables.c
> @@ -172,7 +172,7 @@ vtn_ssa_offset_pointer_dereference(struct vtn_builder *b,
>        }
>  
>        /* This is the first access chain so we also need an offset */
> -      assert(!offset);
> +      unreachable(offset);

and here?

-Jordan

>        offset = nir_imm_int(&b->nb, 0);
>     }
>     assert(offset);
> @@ -599,7 +599,7 @@ vtn_type_block_size(struct vtn_type *type)
>        return type->stride * glsl_get_length(type->type);
>  
>     default:
> -      assert(!"Invalid block type");
> +      unreachable("Invalid block type");
>        return 0;
>     }
>  }
> @@ -825,7 +825,7 @@ vtn_block_load(struct vtn_builder *b, struct vtn_pointer *src)
>                                         &access_offset, &access_size);
>        break;
>     default:
> -      assert(!"Invalid block variable mode");
> +      unreachable("Invalid block variable mode");
>     }
>  
>     nir_ssa_def *offset, *index = NULL;
> @@ -1422,7 +1422,7 @@ vtn_storage_class_to_mode(SpvStorageClass class,
>           mode = vtn_variable_mode_ssbo;
>           nir_mode = 0;
>        } else {
> -         assert(!"Invalid uniform variable type");
> +         unreachable("Invalid uniform variable type");
>        }
>        break;
>     case SpvStorageClassStorageBuffer:
> @@ -1437,7 +1437,7 @@ vtn_storage_class_to_mode(SpvStorageClass class,
>           mode = vtn_variable_mode_sampler;
>           nir_mode = nir_var_uniform;
>        } else {
> -         assert(!"Invalid uniform constant variable type");
> +         unreachable("Invalid uniform constant variable type");
>        }
>        break;
>     case SpvStorageClassPushConstant:
> -- 
> 2.13.0
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list