From: Matthias Braun Date: Fri, 31 Aug 2012 11:33:07 +0000 (+0200) Subject: sparc: be more conservative when moving memops around X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=babe0f4cc35d4b25e34e62a07324e2dd061e7cc8;p=libfirm sparc: be more conservative when moving memops around --- 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;