Allow motion of loop invariant bound nodes

Spilling of bound nodes may introduce anti-dependencies, but the
previous restriction doesn't fix the possible problems
This commit is contained in:
Dmitry Stogov 2023-06-08 00:32:36 +03:00
parent ae4daf223e
commit e506c1367d

View File

@ -126,8 +126,9 @@ static void ir_gcm_schedule_late(ir_ctx *ctx, uint32_t *_blocks, ir_bitset visit
ir_block *bb = &ctx->cfg_blocks[b]; ir_block *bb = &ctx->cfg_blocks[b];
uint32_t loop_depth = bb->loop_depth; uint32_t loop_depth = bb->loop_depth;
if (loop_depth if (loop_depth) {
&& !(ctx->binding && ir_binding_find(ctx, ref))) { // TODO: proper support for anti-dependencies between bound nodes ???
// && !(ctx->binding && ir_binding_find(ctx, ref))) {
uint32_t flags; uint32_t flags;
use_list = &ctx->use_lists[ref]; use_list = &ctx->use_lists[ref];