fix broken BRA for return stmts

This commit is contained in:
Brian 2007-02-08 14:10:54 -07:00
parent 34af2b7194
commit fbf0f400b7
2 changed files with 4 additions and 3 deletions

View file

@ -1407,7 +1407,7 @@ _slang_gen_while(slang_assemble_ctx * A, const slang_operation *oper)
prevLoop = A->CurLoop;
A->CurLoop = loop;
cond = _slang_gen_operation(A, &oper->children[0]);
cond = new_cond(_slang_gen_operation(A, &oper->children[0]));
breakIf = new_break_if_false(A->CurLoop, cond);
body = _slang_gen_operation(A, &oper->children[1]);
loop->Children[0] = new_seq(breakIf, body);
@ -1440,7 +1440,7 @@ _slang_gen_do(slang_assemble_ctx * A, const slang_operation *oper)
A->CurLoop = loop;
body = _slang_gen_operation(A, &oper->children[0]);
cond = _slang_gen_operation(A, &oper->children[1]);
cond = new_cond(_slang_gen_operation(A, &oper->children[1]));
breakIf = new_break_if_false(A->CurLoop, cond);
loop->Children[0] = new_seq(body, breakIf);
@ -1474,7 +1474,7 @@ _slang_gen_for(slang_assemble_ctx * A, const slang_operation *oper)
prevLoop = A->CurLoop;
A->CurLoop = loop;
cond = _slang_gen_operation(A, &oper->children[1]);
cond = new_cond(_slang_gen_operation(A, &oper->children[1]));
breakIf = new_break_if_false(A->CurLoop, cond);
body = _slang_gen_operation(A, &oper->children[3]);
incr = _slang_gen_operation(A, &oper->children[2]);

View file

@ -487,6 +487,7 @@ new_instruction(struct gl_program *prog, gl_inst_opcode opcode)
prog->NumInstructions++;
_mesa_init_instructions(inst, 1);
inst->Opcode = opcode;
inst->BranchTarget = -1; /* invalid */
return inst;
}