From: Jason Ekstrand Date: Wed, 12 Aug 2020 20:47:18 +0000 (-0500) Subject: nir/lower_goto_if: Rework some set union logic X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0fad20f21b39b72c965151a0e2b0fb36e436b813;p=mesa.git nir/lower_goto_if: Rework some set union logic I find the ternary a bit hard to read. The optimization is fairly obvious but the way it's coded makes things more dense than they probably need to be. Reviewed-by: Karol Herbst Part-of: --- diff --git a/src/compiler/nir/nir_lower_goto_ifs.c b/src/compiler/nir/nir_lower_goto_ifs.c index b944b4c3164..ac202950fb6 100644 --- a/src/compiler/nir/nir_lower_goto_ifs.c +++ b/src/compiler/nir/nir_lower_goto_ifs.c @@ -612,9 +612,16 @@ organize_levels(struct list_head *levels, struct set *remaining, } else { set_foreach(curr_level->blocks, blocks_entry) { nir_block *level_block = (nir_block *) blocks_entry->key; - if (!prev_frontier) { - prev_frontier = curr_level->blocks->entries == 1 ? - level_block->dom_frontier : + if (curr_level->blocks->entries == 1) { + /* If we only have one block, there's no union operation and we + * can just use the one from the one block. + */ + prev_frontier = level_block->dom_frontier; + break; + } + + if (prev_frontier == NULL) { + prev_frontier = _mesa_set_clone(level_block->dom_frontier, prev_level); } else { set_foreach(level_block->dom_frontier, entry)