From c44d50775209266b5c8bad0ab7a7c4ccd7db14a4 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Mon, 24 Aug 2015 17:30:08 -0700 Subject: [PATCH] nir: Strengthen "no jumps" assertions in instruction insertion API. Jumps must be the last instruction in a block, so inserting another instruction after a jump is illegal. Previously, we only checked this when the new instruction being inserted was a jump. This is a red herring - inserting *any* kind of instruction after a jump is illegal. Signed-off-by: Kenneth Graunke Reviewed-by: Jason Ekstrand Acked-by: Connor Abbott --- src/glsl/nir/nir.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/glsl/nir/nir.c b/src/glsl/nir/nir.c index 77cc4f078a3..ff758f447e8 100644 --- a/src/glsl/nir/nir.c +++ b/src/glsl/nir/nir.c @@ -675,9 +675,10 @@ nir_instr_insert_before(nir_instr *instr, nir_instr *before) void nir_instr_insert_after(nir_instr *instr, nir_instr *after) { + assert(instr->type != nir_instr_type_jump); + if (after->type == nir_instr_type_jump) { assert(instr == nir_block_last_instr(instr->block)); - assert(instr->type != nir_instr_type_jump); } after->block = instr->block; @@ -705,10 +706,9 @@ nir_instr_insert_before_block(nir_block *block, nir_instr *before) void nir_instr_insert_after_block(nir_block *block, nir_instr *after) { - if (after->type == nir_instr_type_jump) { - assert(exec_list_is_empty(&block->instr_list) || - nir_block_last_instr(block)->type != nir_instr_type_jump); - } + nir_instr *last = nir_block_last_instr(block); + assert(last == NULL || last->type != nir_instr_type_jump); + (void) last; after->block = block; add_defs_uses(after); -- 2.30.2