From 207718f6ba04ac86e4ea1beb9235ca9940778d4c Mon Sep 17 00:00:00 2001 From: Aleksey Demakov Date: Wed, 12 Jul 2006 16:43:03 +0000 Subject: [PATCH] fix problem with moving blocks that go just after init_block --- ChangeLog | 7 +++++++ jit/jit-insn.c | 10 ++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0792140..fab1de6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-07-12 Aleksey Demakov + + * jit/jit-insn.c (jit_insn_move_blocks_to_start): fix problem with + wrong order of blocks that were moved from the position just after + the init_block and with disappearance of blocks after the empty + init_block. + 2006-07-06 Aleksey Demakov * jit/jit-rules-x86.ins: fix division by power of two. diff --git a/jit/jit-insn.c b/jit/jit-insn.c index 85c2fed..fa37ecb 100644 --- a/jit/jit-insn.c +++ b/jit/jit-insn.c @@ -7958,9 +7958,15 @@ int jit_insn_move_blocks_to_start func->builder->init_insn = -1; } - /* If the first block is just after "init_block", then nothing to do */ - if(init_block->next == first_block) + /* If the first block is just after "init_block", then only move + the init_block pointer ahead */ + if(init_block == first_block || init_block->next == first_block) { + while(init_block != 0 && init_block->label != to_label) + { + init_block = init_block->next; + } + func->builder->init_block = init_block; return 1; } -- 2.47.3