projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
remove old+unused code
[libfirm]
/
ir
/
be
/
ia32
/
ia32_optimize.c
diff --git
a/ir/be/ia32/ia32_optimize.c
b/ir/be/ia32/ia32_optimize.c
index
82b20a3
..
671b4aa
100644
(file)
--- a/
ir/be/ia32/ia32_optimize.c
+++ b/
ir/be/ia32/ia32_optimize.c
@@
-53,7
+53,6
@@
#include "ia32_common_transform.h"
#include "ia32_transform.h"
#include "ia32_dbg_stat.h"
#include "ia32_common_transform.h"
#include "ia32_transform.h"
#include "ia32_dbg_stat.h"
-#include "ia32_util.h"
#include "ia32_architecture.h"
DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;)
#include "ia32_architecture.h"
DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;)
@@
-221,14
+220,15
@@
static void peephole_ia32_Test(ir_node *node)
ir_node *flags_proj;
ir_mode *flags_mode;
ir_node *schedpoint;
ir_node *flags_proj;
ir_mode *flags_mode;
ir_node *schedpoint;
+ ir_node *op = left;
const ir_edge_t *edge;
if (get_nodes_block(left) != block)
return;
const ir_edge_t *edge;
if (get_nodes_block(left) != block)
return;
- if (is_Proj(
left
)) {
- pn
= get_Proj_proj(left
);
-
left = get_Proj_pred(left
);
+ if (is_Proj(
op
)) {
+ pn
= get_Proj_proj(op
);
+
op = get_Proj_pred(op
);
}
/* walk schedule up and abort when we find left or some other node
}
/* walk schedule up and abort when we find left or some other node
@@
-236,7
+236,7
@@
static void peephole_ia32_Test(ir_node *node)
schedpoint = node;
for (;;) {
schedpoint = sched_prev(schedpoint);
schedpoint = node;
for (;;) {
schedpoint = sched_prev(schedpoint);
- if (schedpoint ==
left
)
+ if (schedpoint ==
op
)
break;
if (arch_irn_is(schedpoint, modify_flags))
return;
break;
if (arch_irn_is(schedpoint, modify_flags))
return;
@@
-254,7
+254,7
@@
static void peephole_ia32_Test(ir_node *node)
}
}
}
}
- switch (produces_test_flag(
left
, pn)) {
+ switch (produces_test_flag(
op
, pn)) {
case produces_flag_zero:
break;
case produces_flag_zero:
break;
@@
-276,21
+276,24
@@
static void peephole_ia32_Test(ir_node *node)
return;
}
return;
}
- if (get_irn_mode(
left
) != mode_T) {
- set_irn_mode(
left
, mode_T);
+ if (get_irn_mode(
op
) != mode_T) {
+ set_irn_mode(
op
, mode_T);
/* If there are other users, reroute them to result proj */
/* If there are other users, reroute them to result proj */
- if (get_irn_n_edges(
left
) != 2) {
- ir_node *res = new_r_Proj(
left
, mode_Iu, pn_ia32_res);
+ if (get_irn_n_edges(
op
) != 2) {
+ ir_node *res = new_r_Proj(
op
, mode_Iu, pn_ia32_res);
- edges_reroute(
left, res, current_ir_graph
);
+ edges_reroute(
op, res
);
/* Reattach the result proj to left */
/* Reattach the result proj to left */
- set_Proj_pred(res,
left
);
+ set_Proj_pred(res,
op
);
}
}
+ } else {
+ if (get_irn_n_edges(left) == 2)
+ kill_node(left);
}
flags_mode = ia32_reg_classes[CLASS_ia32_flags].mode;
}
flags_mode = ia32_reg_classes[CLASS_ia32_flags].mode;
- flags_proj = new_r_Proj(
left
, flags_mode, pn_ia32_flags);
+ flags_proj = new_r_Proj(
op
, flags_mode, pn_ia32_flags);
arch_set_irn_register(flags_proj, &ia32_registers[REG_EFLAGS]);
assert(get_irn_mode(node) != mode_T);
arch_set_irn_register(flags_proj, &ia32_registers[REG_EFLAGS]);
assert(get_irn_mode(node) != mode_T);
@@
-578,8
+581,8
@@
static void peephole_store_incsp(ir_node *store)
/* we have to be at offset 0 */
int my_offset = get_ia32_am_offs_int(store);
if (my_offset != 0) {
/* we have to be at offset 0 */
int my_offset = get_ia32_am_offs_int(store);
if (my_offset != 0) {
- /* TODO here: find out wether there is a store with offset 0 before
- * us and wether we can move it down to our place */
+ /* TODO here: find out w
h
ether there is a store with offset 0 before
+ * us and w
h
ether we can move it down to our place */
return;
}
ir_mode *ls_mode = get_ia32_ls_mode(store);
return;
}
ir_mode *ls_mode = get_ia32_ls_mode(store);
@@
-1271,7
+1274,7
@@
void ia32_peephole_optimization(ir_graph *irg)
/**
* Removes node from schedule if it is not used anymore. If irn is a mode_T node
/**
* Removes node from schedule if it is not used anymore. If irn is a mode_T node
- * all it
'
s Projs are removed as well.
+ * all its Projs are removed as well.
* @param irn The irn to be removed from schedule
*/
static inline void try_kill(ir_node *node)
* @param irn The irn to be removed from schedule
*/
static inline void try_kill(ir_node *node)