summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2015-08-31 16:54:02 -0700
committerJason Ekstrand <jason.ekstrand@intel.com>2015-08-31 18:17:07 -0700
commite16531fbe3a79bc27cf00701616a260b452597ef (patch)
tree80ad0634b9e9565596495e0d154ae6e52fc12e10
parentf3a483069a6f0d38c10cec88417ae2b5b5aa3392 (diff)
nir/builder: Use nir_after_instr to advance the cursor
This *should* ensure that the cursor gets properly advanced in all cases. We had a problem before where, if the cursor was created using nir_after_cf_node on a non-block cf_node, that would call nir_before_block on the block following the cf node. Instructions would then get inserted in backwards order at the top of the block which is not at all what you would expect from nir_after_cf_node. By just resetting to after_instr, we avoid all these problems. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
-rw-r--r--src/glsl/nir/nir_builder.h3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/glsl/nir/nir_builder.h b/src/glsl/nir/nir_builder.h
index 08b40f8ea7..ba988d71dd 100644
--- a/src/glsl/nir/nir_builder.h
+++ b/src/glsl/nir/nir_builder.h
@@ -49,8 +49,7 @@ nir_builder_instr_insert(nir_builder *build, nir_instr *instr)
nir_instr_insert(build->cursor, instr);
/* Move the cursor forward. */
- if (build->cursor.option == nir_cursor_after_instr)
- build->cursor.instr = instr;
+ build->cursor = nir_after_instr(instr);
}
static inline void