lima/ppir: abort compilation in case of unsupported intrinsic
authorErico Nunes <nunes.erico@gmail.com>
Sun, 5 May 2019 08:53:33 +0000 (10:53 +0200)
committerErico Nunes <nunes.erico@gmail.com>
Mon, 6 May 2019 15:15:27 +0000 (17:15 +0200)
Currently ppir continues compilation when there is an unsupported
intrinsic, resulting in a shader that will surely not work as intended.

This is a problem during piglit runs as some tests don't compile
properly due to this but actually still get submitted to the gpu and
leave the system in an unstable state after executing, causing further
tests to fail.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
src/gallium/drivers/lima/ir/pp/nir.c

index 6cb90701fd32c493a6914b785828329be14c0857..bb5038541eaf1771415462d4662a49ba97f6bddc 100644 (file)
@@ -380,8 +380,10 @@ static bool ppir_emit_block(ppir_compiler *comp, nir_block *nblock)
    nir_foreach_instr(instr, nblock) {
       assert(instr->type < nir_instr_type_phi);
       ppir_node *node = ppir_emit_instr[instr->type](block, instr);
-      if (node)
-         list_addtail(&node->list, &block->node_list);
+      if (!node)
+         return false;
+
+      list_addtail(&node->list, &block->node_list);
    }
 
    return true;