projects
/
libfirm
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e0a2eca
)
- BugFix: the end block might be unreachable, check this first
author
Michael Beck
<beck@ipd.info.uni-karlsruhe.de>
Tue, 17 Mar 2009 15:44:17 +0000
(15:44 +0000)
committer
Michael Beck
<beck@ipd.info.uni-karlsruhe.de>
Tue, 17 Mar 2009 15:44:17 +0000
(15:44 +0000)
[r25700]
ir/opt/opt_ldst.c
patch
|
blob
|
history
diff --git
a/ir/opt/opt_ldst.c
b/ir/opt/opt_ldst.c
index
0ca5dec
..
b2e4306
100644
(file)
--- 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;
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));
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) {
rbitset_cpy(env.curr_set, pred_bl->avail_out, env.rbs_size);
if (n > 1) {