nir: Remove fake edges in the CF handling code
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 31 Aug 2016 21:45:08 +0000 (14:45 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 2 Sep 2016 18:24:09 +0000 (11:24 -0700)
commitaad4f15506c2b5ff9f3304a467b51b45dd77554d
tree9708c093a41fb2d794afdd52bdbb89d5e7f7f57e
parent9a4d76e534920a54c28092311ab6da90c6d7b8d3
nir: Remove fake edges in the CF handling code

When NIR was first introduced, Connor added this fake-edge hack to work
around issues related to unreachable blocks.  Thanks to GLSL IR's jump
lowering code, the only unreachable code you can have is a block after an
infinite loop.  With SPIR-V, we didn't have the jump lowering code so we
could also end up with the "if (...) { break; } else { continue; }" case
which generates an unreachable block after the if.  Because of this, most
of NIR had to be fixed up for handling unreachable blocks.  The only
remaining case of not handling unreachable blocks was specifically the
block-after-infinite-loop case in dead_cf which was fixed by the previous
commit.  We can now delete the fake edge hack.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
src/compiler/nir/nir_control_flow.c