lima/gpir: Ignore unscheduled successors in can_use_complex()
authorConnor Abbott <cwabbott0@gmail.com>
Mon, 2 Sep 2019 07:48:54 +0000 (09:48 +0200)
committerConnor Abbott <cwabbott0@gmail.com>
Mon, 9 Sep 2019 10:40:58 +0000 (17:40 +0700)
The point of the function is to avoid creating a complex move which is
used by certain slots in the next instruction, but unscheduled
successors will never be in the next instruction. Found while debugging
a crash that the previous commit fixed.

Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
Tested-by: Vasily Khoruzhick <anarsoul@gmail.com>
src/gallium/drivers/lima/ir/gp/scheduler.c

index 9900ceaa04158e7762c3a3e48929dfbf636417a6..bfb64543e065eb5d9ccc9448132b3376ea3e8377 100644 (file)
@@ -1154,7 +1154,8 @@ static bool can_use_complex(gpir_node *node)
          continue;
 
       gpir_node *succ = dep->succ;
-      if (succ->type != gpir_node_type_alu)
+      if (succ->type != gpir_node_type_alu ||
+          !succ->sched.instr)
          continue;
 
       /* Note: this must be consistent with gpir_codegen_{mul,add}_slot{0,1}