From 788d45cb478d6285fe6811c87b4f1db1daded6d9 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Tue, 21 Jul 2015 19:54:23 -0700 Subject: nir/cf: handle phi nodes better in split_block_beginning() Signed-off-by: Connor Abbott Reviewed-by: Kenneth Graunke --- src/glsl/nir/nir_control_flow.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/glsl') diff --git a/src/glsl/nir/nir_control_flow.c b/src/glsl/nir/nir_control_flow.c index 205b60819d4..b416a5813d3 100644 --- a/src/glsl/nir/nir_control_flow.c +++ b/src/glsl/nir/nir_control_flow.c @@ -210,6 +210,19 @@ split_block_beginning(nir_block *block) link_blocks(pred, new_block, NULL); } + /* Any phi nodes must stay part of the new block, or else their + * sourcse will be messed up. This will reverse the order of the phi's, but + * order shouldn't matter. + */ + nir_foreach_instr_safe(block, instr) { + if (instr->type != nir_instr_type_phi) + break; + + exec_node_remove(&instr->node); + instr->block = new_block; + exec_list_push_head(&new_block->instr_list, &instr->node); + } + return new_block; } -- cgit v1.2.3