nir: Add a dominance validation pass
authorJason Ekstrand <jason@jlekstrand.net>
Mon, 1 Jun 2020 20:39:31 +0000 (15:39 -0500)
committerMarge Bot <eric+marge@anholt.net>
Tue, 8 Sep 2020 19:44:01 +0000 (19:44 +0000)
commit45bcb1084139b58378551e2d954bd6032db20330
tree37521fecf821202c3e2e50464366919a8ae88c99
parent6cef8040672e84393e59ed6efa9953c95f5f8c92
nir: Add a dominance validation pass

We don't do full dominance validation of SSA values in nir_validate
because it requires generating valid dominance information and, while
that's not extremely expensive, it's probably more than we want to do on
every pass.  Also, dominance information is generated through the
metadata system so if we ran it by default in nir_validate, we would get
different beavior of the metadata system based on whether or not you
have a debug build and metadata bugs would be very hard to find.

However, having a pass for it that can be run occasionally, should help
detect and expose bugs.  For ease of use, we add a NIR_VALIDATE_SSA_DOMINANCE
environment variable which can be set to manually enable dominance
validation as a standard part of nir_validate.

Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5288>
src/compiler/nir/nir.h
src/compiler/nir/nir_validate.c