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 <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2401>
This commit is contained in:
Jason Ekstrand
2020-08-12 15:47:18 -05:00
committed by Marge Bot
parent d161798589
commit 0fad20f21b

View File

@@ -612,9 +612,16 @@ organize_levels(struct list_head *levels, struct set *remaining,
} else { } else {
set_foreach(curr_level->blocks, blocks_entry) { set_foreach(curr_level->blocks, blocks_entry) {
nir_block *level_block = (nir_block *) blocks_entry->key; nir_block *level_block = (nir_block *) blocks_entry->key;
if (!prev_frontier) { if (curr_level->blocks->entries == 1) {
prev_frontier = curr_level->blocks->entries == 1 ? /* If we only have one block, there's no union operation and we
level_block->dom_frontier : * 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); _mesa_set_clone(level_block->dom_frontier, prev_level);
} else { } else {
set_foreach(level_block->dom_frontier, entry) set_foreach(level_block->dom_frontier, entry)