From: Alyssa Rosenzweig Date: Wed, 31 Jul 2019 22:49:30 +0000 (-0700) Subject: pan/midgard: Use standard list traversal to find initial tag X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=73c40d6bbbffc5d13e0e3ce823fa349286382c77;p=mesa.git pan/midgard: Use standard list traversal to find initial tag Fixes a hang (and abort) on empty shaders, which you shouldn't have anyway but better safe than sorry. DCE going on the fritz is no reason to freeze the system. Signed-off-by: Alyssa Rosenzweig --- diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c index d36caa3193d..a35b43faee7 100644 --- a/src/panfrost/midgard/midgard_compile.c +++ b/src/panfrost/midgard/midgard_compile.c @@ -2229,19 +2229,16 @@ midgard_get_first_tag_from_block(compiler_context *ctx, unsigned block_idx) unsigned first_tag = 0; - do { - midgard_bundle *initial_bundle = util_dynarray_element(&initial_block->bundles, midgard_bundle, 0); + mir_foreach_block_from(ctx, initial_block, v) { + midgard_bundle *initial_bundle = + util_dynarray_element(&v->bundles, midgard_bundle, 0); if (initial_bundle) { first_tag = initial_bundle->tag; break; } + } - /* Initial block is empty, try the next block */ - initial_block = list_first_entry(&(initial_block->link), midgard_block, link); - } while(initial_block != NULL); - - assert(first_tag); return first_tag; }