projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix wrong assert, expor copy_node_attr function to public API
[libfirm]
/
ir
/
lower
/
lower_mode_b.c
diff --git
a/ir/lower/lower_mode_b.c
b/ir/lower/lower_mode_b.c
index
47a404b
..
a6c0f75
100644
(file)
--- a/
ir/lower/lower_mode_b.c
+++ b/
ir/lower/lower_mode_b.c
@@
-32,6
+32,7
@@
#include "irnode_t.h"
#include "ircons_t.h"
#include "irnode_t.h"
#include "ircons_t.h"
+#include "irflag.h"
#include "irgwalk.h"
#include "irtools.h"
#include "iredges.h"
#include "irgwalk.h"
#include "irtools.h"
#include "iredges.h"
@@
-85,7
+86,7
@@
static ir_node *create_convb(ir_node *node)
{
ir_graph *irg = current_ir_graph;
ir_node *block = get_nodes_block(node);
{
ir_graph *irg = current_ir_graph;
ir_node *block = get_nodes_block(node);
- ir_node *conv = new_rd_Conv(NULL, irg, block, node, mode_b
, 0
);
+ ir_node *conv = new_rd_Conv(NULL, irg, block, node, mode_b);
return conv;
}
return conv;
}
@@
-116,7
+117,7
@@
static ir_node *create_set(ir_node *node)
ir_node *set = new_rd_Mux(dbgi, irg, block, node, zero, one, mode);
if (mode != config.lowered_mode) {
ir_node *set = new_rd_Mux(dbgi, irg, block, node, zero, one, mode);
if (mode != config.lowered_mode) {
- set = new_r_Conv(irg, block, set, config.lowered_mode
, 0
);
+ set = new_r_Conv(irg, block, set, config.lowered_mode);
}
return set;
}
return set;
@@
-291,8
+292,8
@@
static ir_node *lower_node(ir_node *node)
ir_node *shift_cnt = new_d_Const(dbgi, tv);
if(cmp_mode != mode) {
ir_node *shift_cnt = new_d_Const(dbgi, tv);
if(cmp_mode != mode) {
- a = new_rd_Conv(dbgi, irg, block, a, mode
, 0
);
- b = new_rd_Conv(dbgi, irg, block, b, mode
, 0
);
+ a = new_rd_Conv(dbgi, irg, block, a, mode);
+ b = new_rd_Conv(dbgi, irg, block, b, mode);
}
res = new_rd_Sub(dbgi, irg, block, a, b, mode);
}
res = new_rd_Sub(dbgi, irg, block, a, b, mode);
@@
-404,8
+405,12
@@
void ir_lower_mode_b(ir_graph *irg, const lower_mode_b_config_t *nconfig)
config = *nconfig;
lowered_nodes = new_pdeq();
config = *nconfig;
lowered_nodes = new_pdeq();
+ /* ensure no optimisation touches muxes anymore */
+ set_irg_state(irg, IR_GRAPH_STATE_KEEP_MUX);
+
ir_reserve_resources(irg, IR_RESOURCE_IRN_LINK);
ir_reserve_resources(irg, IR_RESOURCE_IRN_LINK);
+ set_opt_allow_conv_b(0);
irg_walk_graph(irg, clear_links, NULL, NULL);
irg_walk_graph(irg, lower_mode_b_walker, NULL, NULL);
irg_walk_graph(irg, clear_links, NULL, NULL);
irg_walk_graph(irg, lower_mode_b_walker, NULL, NULL);