X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbepeephole.c;h=cc26a63ea6f7a9ea017b3a414751440ff953b419;hb=6be797281b157f8f71b9c47d28b3d09f2a7918cc;hp=d58171db51872d9d62ed67044dfd903c34c5d2cb;hpb=7494f40e8a7628f1da6019bdba0e7c64bc9c1a17;p=libfirm diff --git a/ir/be/bepeephole.c b/ir/be/bepeephole.c index d58171db5..cc26a63ea 100644 --- a/ir/be/bepeephole.c +++ b/ir/be/bepeephole.c @@ -303,6 +303,14 @@ bool be_can_move_up(ir_heights_t *heights, const ir_node *node, /* currently we can move up exactly 1 block */ assert(get_Block_cfgpred_block(node_block, 0) == after_block); ir_node *first = sched_first(node_block); + + /* do not move nodes changing memory */ + if (is_memop(node)) { + ir_node *meminput = get_memop_mem(node); + if (!is_NoMem(meminput)) + return false; + } + /* make sure we can move to the beginning of the succ block */ if (node != first && !be_can_move_up(heights, node, sched_prev(first))) return false;