[Mesa-dev] [PATCH 15/21] nir/cf: fix link_blocks() when there are no successors
Connor Abbott
cwabbott0 at gmail.com
Tue Jul 21 19:54:29 PDT 2015
When we insert a single basic block A into another basic block B, we
will split B into C and D, insert A in the middle, and then splice
together C, A, and D. When we splice together C and A, we need to move
the successors of A into C -- except A has no successors, since it
hasn't been inserted yet. So in move_successors(), we need to handle the
case where the block whose successors are to be moved doesn't have any
successors. Fixing link_blocks() here prevents a segfault and makes it
work correctly.
Signed-off-by: Connor Abbott <connor.w.abbott at intel.com>
---
src/glsl/nir/nir_control_flow.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/glsl/nir/nir_control_flow.c b/src/glsl/nir/nir_control_flow.c
index 91788ad..9ae113f 100644
--- a/src/glsl/nir/nir_control_flow.c
+++ b/src/glsl/nir/nir_control_flow.c
@@ -57,7 +57,8 @@ static void
link_blocks(nir_block *pred, nir_block *succ1, nir_block *succ2)
{
pred->successors[0] = succ1;
- block_add_pred(succ1, pred);
+ if (succ1 != NULL)
+ block_add_pred(succ1, pred);
pred->successors[1] = succ2;
if (succ2 != NULL)
--
2.4.3
More information about the mesa-dev
mailing list