nir/cf: fix link_blocks() when there are no successors
authorConnor Abbott <cwabbott0@gmail.com>
Wed, 22 Jul 2015 02:54:29 +0000 (19:54 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 24 Aug 2015 20:31:42 +0000 (13:31 -0700)
commit6f5c81f86f9b1b08b57435562be657fb2d220408
tree3aa3f3b284a73f6354169d76bcd3f27e191a7da6
parent6d028749ac593b6c724ab86a42bf969da47cc569
nir/cf: fix link_blocks() when there are no successors

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@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/glsl/nir/nir_control_flow.c