summaryrefslogtreecommitdiffhomepage
path: root/ir/be/bepeephole.c
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2011-10-17 15:57:57 +0200
committerMatthias Braun <matze@braunis.de>2011-10-17 18:30:04 +0200
commit51a94c497e234216af41b8a0d3a4f7057d3ed39b (patch)
tree4d2e61aa0e7221a50dc9ba7ee2e418f3b50e6683 /ir/be/bepeephole.c
parent0f7d29a94fa7c1321861150d63ed1e54eac361bf (diff)
bepeephole: make assert about dominance less strict
Diffstat (limited to 'ir/be/bepeephole.c')
-rw-r--r--ir/be/bepeephole.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/ir/be/bepeephole.c b/ir/be/bepeephole.c
index 2c9ebe1..f38dd2f 100644
--- a/ir/be/bepeephole.c
+++ b/ir/be/bepeephole.c
@@ -149,8 +149,8 @@ static void be_peephole_before_exchange(const ir_node *old_node,
DB((dbg, LEVEL_1, "About to exchange and kill %+F with %+F\n", old_node, new_node));
- assert(sched_is_scheduled(new_node));
- assert(value_dominates(new_node, old_node));
+ assert(sched_is_scheduled(skip_Proj_const(old_node)));
+ assert(sched_is_scheduled(skip_Proj(new_node)));
if (current_node == old_node) {
old_is_current = true;
@@ -159,6 +159,10 @@ static void be_peephole_before_exchange(const ir_node *old_node,
* must be processed next. */
current_node = sched_next(current_node);
assert (!is_Bad(current_node));
+
+ /* we can't handle liveness updates correctly when exchange current node
+ * with something behind it */
+ assert(value_dominates(skip_Proj(new_node), skip_Proj_const(old_node)));
}
if (!mode_is_data(get_irn_mode(old_node)))