On 30/10/2013 12:47 PM, Richard Henderson wrote:
On 10/30/2013 12:07 PM, Sebastian Macke wrote:
case JUMP_BRANCH:
{
int l1 = gen_new_label();
- tcg_gen_brcondi_tl(TCG_COND_NE, dc->btaken, 0, l1);
+ tcg_gen_brcondi_tl(TCG_COND_NE, jmp_pc, 0, l1);
gen_goto_tb(dc, 1, dc->pc);
gen_set_label(l1);
- tcg_temp_free(dc->btaken);
gen_goto_tb(dc, 0, dc->j_target);
break;
... here.
But j_target is not known when the delayed slot is translated separately. (E.g.
if the delayed slot is at a page boundary.)
Hmm. This was just guesswork on my part since I don't have a tree
with your previous patch set applied; j_target of course doesn't
exist in master.
Do you have a publicly accessible tree with all your patches applied?
I'd like to re-read the logic in the proper context.
After you are the second who demanded it:
https://github.com/s-macke/qemu/tree/or32-optimize
r~