nir/dominance: Handle unreachable blocks
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 29 Dec 2015 23:25:43 +0000 (15:25 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 29 Dec 2015 23:29:27 +0000 (15:29 -0800)
commit51b04d03d5f52b0328c70157e3b102727c7dc9af
tree3d985af9c205d235997ac62d5ec8a04ebb24d168
parentb4a1c9b506487bff1c411d91dca87c4fef5e788f
nir/dominance: Handle unreachable blocks

Previously, nir_dominance.c didn't properly handle unreachable blocks.
This can happen if, for instance, you have something like this:

loop {
   if (...) {
      break;
   } else {
      break;
   }
}

In this case, the block right after the if statement will be unreachable.
This commit makes two changes to handle this.  First, it removes an assert
and allows block->imm_dom to be null if the block is unreachable.  Second,
it properly skips unreachable blocks in calc_dom_frontier_cb.
src/glsl/nir/nir_dominance.c