From 845002e163e394efa9536e726d09f78b2497606e Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Wed, 24 Jun 2015 21:38:49 -0700 Subject: [PATCH] i965/nir: Handle returns as long as they're at the end of a function --- src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp index a378019af5b..46c30fcae26 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp @@ -1774,6 +1774,12 @@ fs_visitor::nir_emit_jump(const fs_builder &bld, nir_jump_instr *instr) bld.emit(BRW_OPCODE_CONTINUE); break; case nir_jump_return: + /* This has to be the last block in the shader. We don't handle + * early returns. + */ + assert(nir_cf_node_next(&instr->instr.block->cf_node) == NULL && + instr->instr.block->cf_node.parent->type == nir_cf_node_function); + break; default: unreachable("unknown jump"); } -- 2.30.2