nir/dead_cf: Repair SSA if the pass makes progress
authorJason Ekstrand <jason@jlekstrand.net>
Fri, 30 Aug 2019 16:35:26 +0000 (11:35 -0500)
committerJason Ekstrand <jason@jlekstrand.net>
Fri, 6 Sep 2019 23:39:01 +0000 (23:39 +0000)
commitc832820ce959ae7c2b4971befceae634d800330f
treec85f5fa5bd2c78b587b72cd4896d8b4ea1935326
parent1005272a2b7c744b6ac4d846566359a8ff1b6295
nir/dead_cf: Repair SSA if the pass makes progress

The dead_cf pass calls into the CF manipulation helpers which attempt to
keep NIR's SSA form sane.  However, when the only break is removed from
a loop, dominance gets messed up anyway because the CF SSA clean-up code
only looks at phis and doesn't consider the case of code becoming
unreachable.  One solution to this would be to put the loop into LCSSA
form before we modify any of its contents.  Another (and the approach
taken by this pass) is to just run the repair_ssa pass afterwards
because the CF manipulation helpers are smart enough to keep all the
use/def stuff sane; they just don't always preserve dominance
properties.

While we're here, we clean up some bogus indentation.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111405
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111069
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
src/compiler/nir/nir_opt_dead_cf.c