i965: Allow exec_list sentinels as arguments to insert functions.
authorMatt Turner <mattst88@gmail.com>
Wed, 18 Feb 2015 02:01:41 +0000 (18:01 -0800)
committerMatt Turner <mattst88@gmail.com>
Wed, 18 Feb 2015 04:44:09 +0000 (20:44 -0800)
commit1af5c4a526ab27ee2e4c5be96148af231f217c25
tree5ea0cc7803dffa70257adc0d3e9b63931de59202
parentb7ce7c00e35ceb3518d932359ed52cacd6679acb
i965: Allow exec_list sentinels as arguments to insert functions.

To insert an instruction at the end of a basic block, we typically do
something like

   inst = block->last_non_control_flow_inst();
   inst->insert_after(block, new_inst);

But blocks can consist of a single control flow instruction, so inst
will actually be the exec_list's head sentinel. We shouldn't use it as
if it were a regular instruction, but it is safe to insert something after
it.

This patch avoids assert-failing because an exec_list sentinel wasn't in
the basic block's instruction list.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_shader.cpp