summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2015-08-24 17:30:08 -0700
committerKenneth Graunke <[email protected]>2015-08-27 13:36:57 -0700
commitc44d50775209266b5c8bad0ab7a7c4ccd7db14a4 (patch)
treeb29c709806586fba2feff6e85a0744608e0e612a
parentbcae4640c89bc2775d1a85b2b27d2787cac8f843 (diff)
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 <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Acked-by: Connor Abbott <[email protected]>
-rw-r--r--src/glsl/nir/nir.c10
1 files 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);