nv50: don't segfault on OPCODE_END for empty programs

This commit is contained in:
Christoph Bumiller 2010-04-29 22:48:00 +02:00
parent d225221e70
commit 6df1e5c4aa
1 changed files with 6 additions and 5 deletions

View File

@ -3169,15 +3169,16 @@ nv50_program_tx_insn(struct nv50_pc *pc,
if (pc->p->type == PIPE_SHADER_FRAGMENT)
nv50_fp_move_results(pc);
/* last insn must be long so it can have the exit bit set */
if (!is_long(pc->p->exec_tail))
convert_to_long(pc, pc->p->exec_tail);
else
if (is_immd(pc->p->exec_tail) ||
if (!pc->p->exec_tail ||
is_immd(pc->p->exec_tail) ||
is_join(pc->p->exec_tail) ||
is_control_flow(pc->p->exec_tail))
emit_nop(pc);
/* last insn must be long so it can have the exit bit set */
if (!is_long(pc->p->exec_tail))
convert_to_long(pc, pc->p->exec_tail);
pc->p->exec_tail->inst[1] |= 1; /* set exit bit */
terminate_mbb(pc);