projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fehler109
[libfirm]
/
ir
/
be
/
bepeephole.c
diff --git
a/ir/be/bepeephole.c
b/ir/be/bepeephole.c
index
afb7d01
..
3d4c4ca
100644
(file)
--- a/
ir/be/bepeephole.c
+++ b/
ir/be/bepeephole.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (C) 1995-200
7
University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-200
8
University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*
* This file is part of libFirm.
*
@@
-92,12
+92,6
@@
static void set_reg_value(ir_node *node)
reg_idx = arch_register_get_index(reg);
cls_idx = arch_register_class_index(cls);
reg_idx = arch_register_get_index(reg);
cls_idx = arch_register_class_index(cls);
-#ifdef DEBUG_libfirm
- {
- ir_node *old_value = register_values[cls_idx][reg_idx];
- assert(old_value == NULL || old_value == node);
- }
-#endif
DBG((dbg, LEVEL_1, "Set Register %s: %+F\n", reg->name, node));
register_values[cls_idx][reg_idx] = node;
}
DBG((dbg, LEVEL_1, "Set Register %s: %+F\n", reg->name, node));
register_values[cls_idx][reg_idx] = node;
}
@@
-137,8
+131,13
@@
void be_peephole_before_exchange(const ir_node *old_node, ir_node *new_node)
DBG((dbg, LEVEL_1, "About to exchange %+F with %+F\n", old_node, new_node));
DBG((dbg, LEVEL_1, "About to exchange %+F with %+F\n", old_node, new_node));
- if(old_node == current_node)
- current_node = new_node;
+ if(old_node == current_node) {
+ if(is_Proj(new_node)) {
+ current_node = get_Proj_pred(new_node);
+ } else {
+ current_node = new_node;
+ }
+ }
if(!mode_is_data(get_irn_mode(old_node)))
return;
if(!mode_is_data(get_irn_mode(old_node)))
return;