From cef83dae71c5bd9689d49572c08555d2acc0389a Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Tue, 17 Mar 2009 15:44:17 +0000 Subject: [PATCH] - BugFix: the end block might be unreachable, check this first [r25700] --- ir/opt/opt_ldst.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ir/opt/opt_ldst.c b/ir/opt/opt_ldst.c index 0ca5deced..b2e43064e 100644 --- a/ir/opt/opt_ldst.c +++ b/ir/opt/opt_ldst.c @@ -1858,11 +1858,19 @@ static int insert_Load(block_t *bl) { unsigned pos = 0; unsigned end = env.rbs_size - 1; int res = 0; - ir_node *pred = get_Block_cfgpred_block(bl->block, 0); - block_t *pred_bl = get_block_entry(pred); + ir_node *pred; + block_t *pred_bl; DB((dbg, LEVEL_3, "processing %+F\n", block)); + if (n == 0) { + /* might still happen for an unreachable block (end for instance) */ + return res; + } + + pred = get_Block_cfgpred_block(bl->block, 0); + pred_bl = get_block_entry(pred); + rbitset_cpy(env.curr_set, pred_bl->avail_out, env.rbs_size); if (n > 1) { -- 2.20.1