[Mesa-dev] [PATCH] nir/builder: Use nir_after_instr to advance the cursor
Jason Ekstrand
jason at jlekstrand.net
Mon Aug 31 18:18:38 PDT 2015
On Mon, Aug 31, 2015 at 5:04 PM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> On Monday, August 31, 2015 04:55:51 PM Jason Ekstrand wrote:
>> 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.
>> ---
>> src/glsl/nir/nir_builder.h | 3 +--
>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/src/glsl/nir/nir_builder.h b/src/glsl/nir/nir_builder.h
>> index 3aa0efd..295a209 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
>>
>
> This seems like the right behavior for the builder to take.
>
> Sorry for the breakage - I hadn't thought through how the
> nir_{before,after}_cf_{node,list} functions translate to blocks.
> Thanks for fixing it.
>
> Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Thanks!
> You've regression tested this, I assume?
Just did. Passes jenkins just fine.
--Jason
More information about the mesa-dev
mailing list