<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Aug 21, 2017 at 2:44 PM, Matt Turner <span dir="ltr"><<a href="mailto:mattst88@gmail.com" target="_blank">mattst88@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Thu, Aug 10, 2017 at 7:02 PM, Jordan Justen<br>
<<a href="mailto:jordan.l.justen@intel.com">jordan.l.justen@intel.com</a>> wrote:<br>
> On 2017-08-10 15:02:33, Matt Turner wrote:<br>
>> Quiets a number of uninitialized variable warnings in clang.<br>
>> ---<br>
>>  src/compiler/spirv/spirv_to_<wbr>nir.c  | 24 ++++++++++++------------<br>
>>  src/compiler/spirv/vtn_<wbr>variables.c | 10 +++++-----<br>
>>  2 files changed, 17 insertions(+), 17 deletions(-)<br>
>><br>
>> diff --git a/src/compiler/spirv/spirv_to_<wbr>nir.c b/src/compiler/spirv/spirv_to_<wbr>nir.c<br>
>> index 7b34dad30c..870dda0314 100644<br>
>> --- a/src/compiler/spirv/spirv_to_<wbr>nir.c<br>
>> +++ b/src/compiler/spirv/spirv_to_<wbr>nir.c<br>
>> @@ -262,7 +262,7 @@ vtn_handle_extension(struct vtn_builder *b, SpvOp opcode,<br>
>>        if (strcmp((const char *)&w[2], "GLSL.std.450") == 0) {<br>
>>           val->ext_handler = vtn_handle_glsl450_<wbr>instruction;<br>
>>        } else {<br>
>> -         assert(!"Unsupported extension");<br>
>> +         unreachable("Unsupported extension");<br>
>>        }<br>
>>        break;<br>
>>     }<br>
>> @@ -724,7 +724,7 @@ translate_image_format(<wbr>SpvImageFormat format)<br>
>>     case SpvImageFormatR16ui:        return 0x8234; /* GL_R16UI */<br>
>>     case SpvImageFormatR8ui:         return 0x8232; /* GL_R8UI */<br>
>>     default:<br>
</span>>> -      assert(!"Invalid image format");gl_primitive_from_<wbr>spv_execution_mode<br>
<span class="">>> +      unreachable("Invalid image format");<br>
>>        return 0;<br>
>>     }<br>
>>  }<br>
>> @@ -785,7 +785,7 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode,<br>
>>        val->type->type = glsl_matrix_type(glsl_get_<wbr>base_type(base->type),<br>
>>                                           glsl_get_vector_elements(base-<wbr>>type),<br>
>>                                           columns);<br>
>> -      assert(!glsl_type_is_error(<wbr>val->type->type));<br>
>> +      unreachable(glsl_type_is_<wbr>error(val->type->type));<br>
><br>
> I think we want assert here, right?<br>
<br>
</span>Yes. How sloppy. Thanks.<br>
<br>
I was hoping I could get a comment from Jason. There seem to be vague<br>
attempts to keep things going even after an assert (return 4 in<br>
gl_primitive_from_spv_<wbr>execution_mode for instance). Are you okay with<br>
making these unreachables? If so, I'll respin the patch and drop that<br>
now-dead code as well as fixing the still-should-be-asserts noted by<br>
Jordan.<br>
</blockquote></div></div><div class="gmail_extra"><br></div><div class="gmail_extra">I'm fine with it.  I have some patches on the list to add a new vtn_fail function which longjumps and then cleans up in which case, we'll replace the unreachable() with vtn_fail().  However, it's marked __noreturn__ so clang should also know that it's not a fall-through in that case as well.</div><div class="gmail_extra"><br></div><div class="gmail_extra">--Jason<br></div></div>