From: Jason Ekstrand Date: Thu, 5 Feb 2015 05:38:28 +0000 (-0800) Subject: nir/from_ssa: Don't try to read an invalid instruction X-Git-Tag: upstream/17.1.0~20627 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=902b0ccc9a5266955d104dc7652ac00e66081f95;p=platform%2Fupstream%2Fmesa.git nir/from_ssa: Don't try to read an invalid instruction Right now, the nir_instr_prev function function blindly looks up the previous element in the exec list and casts it to an instruction even if it's the tail sentinel. The next commit will change this to return null if it's the first instruction. Making this change first avoids getting a segfault between commits. The only reason we never noticed is that, thanks to the way things are laid out in nir_block, the casted instruction's type was never parallal_copy. Reviewed-by: Connor Abbott --- diff --git a/src/glsl/nir/nir_from_ssa.c b/src/glsl/nir/nir_from_ssa.c index 3625237..7c50095 100644 --- a/src/glsl/nir/nir_from_ssa.c +++ b/src/glsl/nir/nir_from_ssa.c @@ -272,7 +272,7 @@ get_parallel_copy_at_end_of_block(nir_block *block) if (last_instr->type == nir_instr_type_jump) last_instr = nir_instr_prev(last_instr); - if (last_instr->type == nir_instr_type_parallel_copy) + if (last_instr && last_instr->type == nir_instr_type_parallel_copy) return nir_instr_as_parallel_copy(last_instr); else return NULL;