Mesa (master): nir/from_ssa: Don't try to read an invalid instruction

Jason Ekstrand jekstrand at kemper.freedesktop.org
Fri Feb 20 01:09:27 UTC 2015


Module: Mesa
Branch: master
Commit: 902b0ccc9a5266955d104dc7652ac00e66081f95
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=902b0ccc9a5266955d104dc7652ac00e66081f95

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Wed Feb  4 21:38:28 2015 -0800

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 <cwabbott0 at gmail.com>

---

 src/glsl/nir/nir_from_ssa.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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;




More information about the mesa-commit mailing list