nir: Give end_block its own index
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Tue, 14 Aug 2018 22:06:38 +0000 (15:06 -0700)
committerCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Wed, 22 Aug 2018 21:41:26 +0000 (14:41 -0700)
Since there's no particular reason for the index to be 0, choose an
index that is not used by other block.  This is convenient when we
store "per-block" data in an array AND look for the successors
data (e.g. any kind of backwards data-flow analysis).

v2: Add a note about end_block's index. (Jason)

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/compiler/nir/nir.c

index e12aa5d80f56ef6aa5c981211c3bd27f29736f65..7ae468451914ae96fb9625208382e925b466502a 100644 (file)
@@ -1641,7 +1641,10 @@ nir_index_blocks(nir_function_impl *impl)
       block->index = index++;
    }
 
       block->index = index++;
    }
 
-   impl->num_blocks = index;
+   /* The end_block isn't really part of the program, which is why its index
+    * is >= num_blocks.
+    */
+   impl->num_blocks = impl->end_block->index = index;
 }
 
 static bool
 }
 
 static bool